您的位置:首页 > 数据库

数据库事务TRANSACTION

2016-04-06 16:36 218 查看
TRANSACTION     简单点说就是同生共死

比如说下表(bank)有个约束 ,pay不能小于10.

idpay
0011000
002500
现在执行  下面两个SQL语句(把001的pay借给002)
①update bank set pay=pay-1000 where id='001'

②update bank set pay=pay+1000 where id='002'


有问题吗?

答案是有问题。001由于有限制,执行不能成功,但是002的不受影响,导致001的钱没少,而002的钱多了一千。

会出现下面的情况:



idpay
0011000
0021500
这种情况是不可以的。

我们想要得到的效果是 两个都成功的情况下数据库数据再进行操作。任何一个出问题,都不执行操作。

这个时候就要用到事务。

开始事务  BEGIN TRANSACTION
提交事务  COMMIT TRANSACTION

回滚事务  ROLLBACK TRANSACTION

比如新建一个查询:(@@ERROR 参考点击打开链接
BEGIN TRANSACTION

DECLARE @errorSun INT    --定义错误计数器

SET @errorSun=0          --没错为0

       update bank set pay=pay-1000 where id='001'

       SET @errorSun=@errorSun+@@ERROR --累计是否有错

       update bank set pay=pay+1000 where id='002'

       SET @errorSun=@errorSun+@@ERROR --累计是否有错

IF @errorSun<>0  --失败的场合

BEGIN

    ROLLBACK TRANSACTION  --事务回滚语句(这种时候上面所有语句是不执行的)

END




ELSE             --成功的场合

BEGIN


    COMMIT TRANSACTION    --事务提交语句

END

end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 事务