事务是维护数据完整性的重要保证,事务的目的是保证对数据的修改或者全部成功(提交)或者全部失败(回滚). 应该为UPDATE或DELETE等涉及数据修改的操作启用一个事务,当发生错误时回滚之前的所有操作.模式通常为: begin transaction update .... if @@error > 0 begin raiserror('Update Failed!',16,1) --抛出错误 rollback --回滚已更新的行 end else commit transaction --保存修改
比如你划帐给别人 先在别人帐户上加上10000元 再在你的帐户上减掉10000元 如果加上10000元之后还来不及给你减去10000元 这时候你把银行的服务器的插头给拔了 停电了.......... if 如果不使用事务 begin 报警找你,银行行长撤职,服务器被砸,你笑不动 end else 你没有赚成
sql server 本身不是就可以保证的事务的原子性嘛? 并且也是用的预写事务日志嘛 , 为什么还需要自己写事务呢
事务是维护数据完整性的重要保证 事务的目的是保证对数据的修改或者全部成功(提交)或者全部失败(回滚). 应该为UPDATE或DELETE等涉及数据修改的操作启用一个事务,当发生错误时回滚之前的所有操作; 模式通常为: Begin transaction Update … If @@error>0 Begin Raiserror(‘Update Failed’,16,1) --抛出错误 Rollback --回滚已更新的行 End Else Commit transaction --保存修改 举例:比如你划帐给别人 先在别人帐户上加上10000元 再在你的帐户上减掉10000元 如果加上10000元之后还来不及给你减去10000元 这时候你把银行的服务器的插头给拔了 停电了.......... if 如果不使用事务 begin 报警找你,银行行长撤职,服务器被砸,你笑不动 end else 你没有赚成Top学习中.....
应该为UPDATE或DELETE等涉及数据修改的操作启用一个事务,当发生错误时回滚之前的所有操作.模式通常为:
begin transaction
update ....
if @@error > 0
begin
raiserror('Update Failed!',16,1) --抛出错误
rollback --回滚已更新的行
end
else
commit transaction --保存修改
if 如果不使用事务
begin
报警找你,银行行长撤职,服务器被砸,你笑不动
end
else
你没有赚成
并且也是用的预写事务日志嘛 ,
为什么还需要自己写事务呢
另外+一点...
比如 如果有个转帐100的存储过程a...
有扣钞票的存储过程b.
+钞票的存储过程c.
这样就可以在b,c中封装异常处理了..
一但出现错误就回滚事件....不然就要自己注意a的设计流程..容易出现各种问题了.
事务的目的是保证对数据的修改或者全部成功(提交)或者全部失败(回滚).
应该为UPDATE或DELETE等涉及数据修改的操作启用一个事务,当发生错误时回滚之前的所有操作;
模式通常为:
Begin transaction
Update …
If @@error>0
Begin
Raiserror(‘Update Failed’,16,1) --抛出错误
Rollback --回滚已更新的行
End
Else
Commit transaction --保存修改
举例:比如你划帐给别人 先在别人帐户上加上10000元 再在你的帐户上减掉10000元 如果加上10000元之后还来不及给你减去10000元 这时候你把银行的服务器的插头给拔了 停电了..........
if 如果不使用事务
begin
报警找你,银行行长撤职,服务器被砸,你笑不动
end
else
你没有赚成Top学习中.....
上面的操作是指insert,update delete等操作,而如果仅仅是select 的话,即便是操作多个数据库也不必要用事务。
你告诉他:"你面试我的时候要用事务.":)
----------------------------------------------
这句话有点意思!
要么成要么不成