什么场合用事务,有什么好处

解决方案 »

  1.   

    事务是维护数据完整性的重要保证,事务的目的是保证对数据的修改或者全部成功(提交)或者全部失败(回滚).
    应该为UPDATE或DELETE等涉及数据修改的操作启用一个事务,当发生错误时回滚之前的所有操作.模式通常为:
    begin transaction
    update ....
    if @@error > 0
    begin
        raiserror('Update Failed!',16,1)      --抛出错误
        rollback      --回滚已更新的行
    end
    else
        commit transaction      --保存修改
      

  2.   

    比如你划帐给别人 先在别人帐户上加上10000元 再在你的帐户上减掉10000元 如果加上10000元之后还来不及给你减去10000元 这时候你把银行的服务器的插头给拔了 停电了..........
    if 如果不使用事务
    begin
    报警找你,银行行长撤职,服务器被砸,你笑不动
    end
    else
    你没有赚成
      

  3.   

    sql server 本身不是就可以保证的事务的原子性嘛?
    并且也是用的预写事务日志嘛 ,
    为什么还需要自己写事务呢
      

  4.   

    同上...
    另外+一点...
    比如 如果有个转帐100的存储过程a...
    有扣钞票的存储过程b.
    +钞票的存储过程c.
    这样就可以在b,c中封装异常处理了..
    一但出现错误就回滚事件....不然就要自己注意a的设计流程..容易出现各种问题了.
      

  5.   

    事务是维护数据完整性的重要保证
    事务的目的是保证对数据的修改或者全部成功(提交)或者全部失败(回滚).
    应该为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学习中.....
      

  6.   

    数据库事务的ACID属性事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性:  · 原子性事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。通常,与某个事务关联的操作具有共同的目标,并且是相互依赖的。如果系统只执行这些操作的一个子集,则可能会破坏事务的总体目标。原子性消除了系统处理操作子集的可能性。  · 一致性事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。某些维护一致性的责任由应用程序开发人员承担,他们必须确保应用程序已强制所有已知的完整性约束。例如,当开发用于转帐的应用程序时,应避免在转帐过程中任意移动小数点。  · 隔离性由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。当事务可序列化时将获得最高的隔离级别。在此级别上,从一组可并行执行的事务获得的结果与通过连续运行每个事务所获得的结果相同。由于高度隔离会限制可并行执行的事务数,所以一些应用程序降低隔离级别以换取更大的吞吐量。   · 持久性 事务完成之后,它对于系统的影响是永久性的。该修改即使出现致命的系统故障也将一直保持。
      

  7.   

    通常是在对同一个数据库中的多个表,或是对多个数据库进行操作的时候需要用事务来保证数据的一致性和完整性。
        上面的操作是指insert,update delete等操作,而如果仅仅是select 的话,即便是操作多个数据库也不必要用事务。
      

  8.   

    yuedeem(扔石头打天) ( ) 信誉:100    Blog  2006-12-21 19:52:34  得分: 0  
    你告诉他:"你面试我的时候要用事务.":)
    ----------------------------------------------
    这句话有点意思!
      

  9.   

    事务是保证了数据库的完整性,原子性(ATOMIC)
    要么成要么不成