zoukankan      html  css  js  c++  java
  • SQL事务

    如何避免这样的问题呢?有三种方法:

    1. 在事务语句最前面加上set xact_abort on

    1. set xact_abort on   
    2. begin tran   
    3. update statement 1 ...   
    4. update statement 2 ...   
    5. delete statement 3 ...   
    6. commit tran   
    7. go 

    当xact_abort 选项为on 时,SQL Server在遇到错误时会终止执行并rollback 整个事务。

    2. 在每个单独的DML语句执行后,立即判断执行状态,并做相应处理。

    1. begin tran   
    2. update statement 1 ...  
    3. if @@error <> 0   
    4. begin rollback tran   
    5. goto labend   
    6. end   
    7. delete statement 2 ...   
    8. if @@error <> 0  
    9. begin rollback tran   
    10. goto labend   
    11. end   
    12. commit tran   
    13. labend:   
    14. go 

    3. 在SQL Server 2005中,可利用 try...catch 异常处理机制。

    1. begin tran   
    2. begin try   
    3. update statement 1 ...   
    4. delete statement 2 ...   
    5. endtry   
    6. begin catch  
    7. if @@trancount > 0   
    8. rollback tran   
    9. end catch  
    10. if @@trancount > 0   
    11. commit tran  
    12. go 

    下面是个简单的存储过程,演示事务处理过程。

    1. create procedure dbo.pr_tran_inproc as begin set nocount on   
    2. begin tran  
    3. update statement 1 ...   
    4. if @@error <> 0   
    5. begin rollback tran   
    6. return -1 end   
    7. delete statement 2 ...   
    8. if @@error <> 0   
    9. begin rollback tran   
    10. return -1   
    11. end commit tran   
    12. return 0   
    13. end   
    14. go  

    关于SQL Server数据库中在存储过程中编写正确的事务处理代码的方法就介绍到这里了,希望本次的介绍能够对您有所帮助。

  • 相关阅读:
    动态规划----查找一个数组中存在的数学数列
    java数据结构和算法------第八章
    java数据结构和算法-----第七章
    04002_HTML表单
    雷林鹏分享:PHP 高级过滤器
    雷林鹏分享:Lua 函数
    雷林鹏分享:Lua 流程控制
    雷林鹏分享:Lua 循环
    雷林鹏分享:Lua 变量
    雷林鹏分享:Lua 数据类型
  • 原文地址:https://www.cnblogs.com/mingdep/p/2501229.html
Copyright © 2011-2022 走看看