Begin tran transaction_try

Declare @insert_tran,@update_tran

 

Insert…..

 

Select @insert_tran=@@error

 

 

 

Update……

 

Select @update_tran=@@error

 

 

 

If @insert_tran=0 and @update_tran=0

 

Begin

 

…rollback tran

 

End

 

 
 

事务需要满足ACID

原子性(Atomicity),一个事务是最基本的执行单元,是不可分割的执行部分,要么都执行,要么都不执行;

一致性(Consistency),数据库总是从一个一致性状态转换到另外一个一致性状态;

隔离性(Isolation),个事务所做的修改在最终提交以前,对其他事务是不可见的;

持久性(Durability)一旦事务提交,则其所做的修改就会永久保存到数据库中。(这个持久性的定义其实是模糊的,没有说清楚持久性的级别);

脏读:事务A访问到了事务B未提交的数据;

幻读:事务A第一次没读到数据,第二次或多次读取的时候,看到了数据;(期间有其他事务进行了insert操作)

不可重复读:事务A第一次读取的数据跟后面读取的数据内容不一样;(期间其他事务可能进行了修改)

https://zhuanlan.zhihu.com/p/512143490

https://www.bilibili.com/video/BV1mS4y1L7w4/?spm_id_from=333.788&vd_source=07539ea0fcf778267253f9a6e6ec097d

https://www.bilibili.com/video/BV1M5411M7xX/?p=10&vd_source=07539ea0fcf778267253f9a6e6ec097d

https://www.bilibili.com/video/BV1X34y1h7wi/?vd_source=07539ea0fcf778267253f9a6e6ec097d