軟件測試開發技術SQL Server的怪辟:異常與孤立事務[2]

發表于:2009-10-13來源:作者:點擊數: 標簽:
軟件測試 開發 技術 SQL Server的怪辟:異常與孤立事務[2] SQL Server 數據庫 關鍵字: sql 三、使用 set xact_abort 來控制部分違反約束的錯誤的執行過程 以下是引用片段: create table Table1 (a int check(a100)) go set xact_abort on begin tran inser

軟件測試開發技術SQL Server的怪辟:異常與孤立事務[2] SQL Server數據庫

關鍵字:sql 三、使用 set xact_abort 來控制部分違反約束的錯誤的執行過程

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

  set xact_abort on
  begin tran
    insert table1 values(10)
    print '這里沒有被執行'
  commit tran
  go
 
  print '' print '==============================================' print ''
 
  set xact_abort off
  begin tran
    insert table1 values(10)
    print '這里被執行'
  commit tran

  go
  drop table table1

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

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

  print '' print '==============================================' print ''

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

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

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

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97