放在事务里面就可以回滚哦!
青山湖网站建设公司创新互联建站,青山湖网站设计制作,有大型网站制作公司丰富经验。已为青山湖1000多家提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的青山湖做网站的公司定做!
sqlserver_update_事务回滚
begin tran
update
if @@rowCount !=约定数
goto err
commit tran
return;
err:
rollback tran
return;
请参阅!
sqlserver 的编辑器一般都是默认自动提交,也就是说你删除后,就自动提交了;不能回滚。
当然如果你设置成不是默认提交的话,那么你在提交之前可以回滚。
而如果是程序代码中删除的话,看你有没有启用事务,如果没有启用事务,那么一般也是默认提交的,如果启用事务,那么再提交前可以回滚,如果已经提交了,那么就回滚不了了。
回滚要放在事务里面进行,才能进行回滚;sql里面的事务使用关键字TransAction
1:可以用try catch捕获
begin try
begin tran
update table set a=1;
commit tran
end Try
begin catch
rollback tran
end catch
2:可以使用error 全局变量
begin tran
update tablename set ad=1111
if @@error0 begin rollback end
commit tran
注意:如果一个事务写了 begin trans ,后面一定要跟上 commit tran或 rollback transaction ,否则可能导致被锁
如何启动Transaction; 共有三种方式
1.自动transaction
每句statement都是一个transaction.例一个update指令更新多笔纪录, 要就全部成功, 只要失败,全部会回复原值.
2.ExplicitTransaction
以Begin Transaction开始(开启)
3.ImplicitTransaction (建议不要用)
以Set Implicit_Transaction ON
如何结束Transaction; 共有三种方式
1. COMMIT Transaction(提交)
Transaction期间的任何修改,都会保证到数据库中
2. ROLLBACK Transaction(回滚)
数据会回复Transaction前状态
3. KILL SPID 强迫停止, 会rollback