事务

 

--开启事务
begin transaction
declare @sum int=0;
update bank set Balance=Balance-100 where cid='3'
set @sum=@sum+@@error--如果上条语句出错,则@@error会记录下来值
update bank set Balance=Balance+100 where cid='1'
set @sum=@sum+@@ERROR
if(@sum<>0)
begin
	rollback
end
else
begin
	commit
end

最终数据没有发生改变。

在事务中,开始有begin,但结束时不写end,而且transaction可以省略或者写成tran.

事务一旦开始,只有两种结果,要么commit,要么rollback。

在sqlserver中,事务分为三种:自动提交事务,隐式事务,显式事务。

在 执行一条sql操作语句时,都会给你自动提交事务,失败则回滚。

显式事务则是手动打开事务,提交或回滚。

隐式事务:set implicit_transactions {on|off},每次执行一个sql语句时,数据库替我们打开事务,但是需要我们手动提交事务,或者回滚事务。

例如,当set implicit_transactions on执行后,执行了对一张表的操作,除非你commit或rollback后,否则你不能查到该表,以及对该表的操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值