什么是事务 是不可分割的逻辑单元,由多个操作部分组成
select GETDATE()--函数
1.自动提交事务
insert、update、delete都是自动提交事务
比如一个学生表和班级表有外键约束 只删掉班级表的数据是执行不了的
insert into Student
values('张三','男',20,'2020-3-16')
commit;一旦提交就持久化了,不能再回滚
rollback;
我们先执行insert再回滚报错
COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION
2.隐式事务
我们开启开启隐式事务
set implicit_transactions on--开启隐式事务、off关闭
先insert在回滚数据就没有了这样的数据叫脏数据,相当于缓存,需要手动持久化提交
3.显示事务
--开始事务 begin transaction declare @errorNum int =0--定义存放错误的结果 update Student set age=Age+10 where ID=12 set @errorNum=@errorNum+@@ERROR--非零 update Student set age=Age-10 where ID=10 set @errorNum=@errorNum+@@ERROR--非零 if @errorNum<>0 begin rollback transaction end else begin commit transaction end
模仿银行存钱,只要两条语句有一条执行失败就会回滚