熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

SQL Server的怪辟:異常與孤立事務[2]

2013-11-15 14:48:59  來源: SQL Server 

  三使用 set xact_abort 來控制部分違反約束的錯誤的執行過程

以下是引用片段
create table Table (a int check(a>))
  go

  set xact_abort on
  begin tran
    insert table values()
    print 這裡沒有被執行
  commit tran
  go
 
  print print ============================================== print
 
  set xact_abort off
  begin tran
    insert table values()
    print 這裡被執行
  commit tran

  go
  drop table table

但 set xact_abort 對於編譯產生的錯誤確沒有起作用且同樣會產生孤立事務

  set xact_abort on
  begin tran
    insert  一個不在的表 values()
    print 這裡沒有被執行
  commit tran
  go

  print print ============================================== print

  set xact_abort off
  begin tran
    insert  一個不在的表 values()
    print 這裡沒有被執行
  commit tran
  go

  select @@trancount 當前連接的活動事務數 有兩個孤立事務
  if @@trancount<> rollback tran

  對於sql中怪辟的各種錯誤和孤立事務在tsql編程中一定要注意小心孤立事務的陷阱盡量避免浪費或孤立資源Microsoft公開宣布過SQLServe下一版本Yukon將有內置異常處理語法那時可以通過代碼對無法預料的錯誤有更好的控制

[]  []  


From:http://tw.wingwit.com/Article/program/SQLServer/201311/22369.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.