SQL里面的事务

--事务:是一种处理机制,一种处理方式,并不是一个实际的操作.包含在事务内的所有有可能修改表数据的操作,要么都能成功执行,要么都不执行。
--转帐:你的帐户余额减少,对方帐户余额增加
--begin
--update bank set cmoney-=1000 where name=‘aa‘
--update bank set cmoney+=1000 where name=‘bb‘
--end
--print @@error --只是找到最近一语句的错误号
--事务的特点:ACID:
--A:原子性:事务是一个不可以再分的整体
--C:一致性:事务在提交前后数据需要保持某种程度的一致
--I:隔离性:事务是独立的,不会受其它的事务影响。
--D:持久性:事务一旦提交,那么数据永久更改
--事务语法:
--begin transaction :开启事务
--commit transaction :提交事务
--rollback transaction :回滚事务
--具体使用事务的方式:将你需要使用事务机制处理的sql命令包含在 事务的开启和事务提交 或者 事务的开启和事务的回滚 之间

--使用事务实现转帐:
declare @error int=0 --记录语句所生成的错误号
begin transaction --开启事务了
update bank set cmoney-=500 where name=‘aa‘
--永远不能在执行完一条sql命令的时候去判断事务是否需要提交还是回滚:1.这样一来,多条sql命令就不再是一个整体了 2.其它的sql命令就不再包含在事务之中,不能使用事务机制进行处理了 在每一条语句后都去使用变量记录当前语句所生成的错误号
--if(@@ERROR <> 0)
-- rollback transaction
set @error+=@@ERROR --记录错误号
update bank set cmoney+=500 where name=‘bb‘
set @error+=@@ERROR
--select * from bank
--执行完所有语句之后,再统一进行判断事务是否需要提交或者回滚
if(@error<>0) --有错误
rollback transaction
else
commit transaction
---------------
go
--使用事务实现转账
declare @error int=0 --记录语句所生成的错误号
begin transaction --开启事务了
update bank set cmoney -=500 where name =‘aa‘
set @error +=@@ERROR --记录错误号
update bank set cmoney +=500 where name =‘bb‘
set @error +=@@ERROR
--执行完所有语句之后,再统一进行判断事务是否需要提交或者回滚
if(@error <>0)--有错误
rollback transaction
else
commit transaction
-----------------------------

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。