码迷,mamicode.com
首页 > 数据库 > 详细

SQL里面的事务

时间:2015-03-19 23:50:04      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:

--事务:是一种处理机制,一种处理方式,并不是一个实际的操作.包含在事务内的所有有可能修改表数据的操作,要么都能成功执行,要么都不执行。
--转帐:你的帐户余额减少,对方帐户余额增加
--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
-----------------------------

SQL里面的事务

标签:

原文地址:http://www.cnblogs.com/dianshen520/p/4352016.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!