一.事务的特性:
1.原子性(Atomicity):事务是一个完整的操作,事务的各步操作是不可分的(原子的),要么都执行,要么都不执行
2.一致性(Consistency):当事务完成时,数据必须处于一致状态
3.隔离性(Isolation)事务与事务之间独立:并发事务之前彼此隔离,独立,它不应以任何方式依赖于或者影响其他事务
4.永久性(Durability):事务完成后,它对数据库的修改被永久保持
二.事务分类:
第一种:自动提交事务
例:
--银行转账回滚(取消)
declare @money money=200
--两个执行语句不是一个整体
--事务
--添加、删除、修改(默认本来就是事务)
--第一种:自动提交事务
update bank
set currentMoney=currentMoney-@money
where customerName='张三'
--执行、持久化(永久的保存了数据)
commit --提交
rollback --回滚
update bank
set currentMoney=currentMoney+@money
where customerName='李四'
第二种:隐式事务
set implicit_transactions on --on开启事务 off关闭事务
update bank
set currentMoney=currentMoney-200
where customerName='张三'
select * from bank --查询不会影响任何数据
rollback --回滚(取消)
commit --提交(持久化,永久保存了数据)
第三种:显示事务(存储过程)
begin transaction --开启事务
-------------------自定义变量系统(全局)变量@@error
declare @errorNum int=0
declare @money money=500
update bank
set currentMoney=currentMoney-@money
where customerNmae='张三'
set @errorNum=@errorNum+@@error ---记录是否报错
update bank
set currentMoney=currentMoney+@money
where customerNmae='张四'
set @errorNum=@errorNum+@@error ---记录是否报错
if @errorNum=0 ---没有报错才会提交
begin
commit transaction --提交事务
print '数据提交了'
end
else
begin
rollback transaction --事务回滚
print '数据回滚了'
end
使用SQL语句管理事务
开始事务
BEGIN TRANSACTION
提交事务
COMMIT TRANSACTION
回滚(撤销)事务
ROLLBACK TRANSACTION