显式事务跟隐式事务

显式事务和隐式事务

BEGIN TRANSACTION  
insert into xxx;
insert into xxx;      
COMMIT TRANSACTION.


在上面那个显示事务中,如果第二条insert语句失败, 会怎样? 第一条insert语句是否会已经插进去了?

你这个事务会不会回滚?



------解决思路----------------------
事务是原子级的,只要没有全部执行成功,都会自动回滚,所以第二条失败,第一条也会回滚,不会插入
------解决思路----------------------

一般你需要去捕获这个错误,然后rollback。

也可以设置:

set xact_abort on

这样当出现错误,就能够自动回滚