SQLServer事務

來源:互聯網
上載者:User

標籤:

指訪問並可能更新資料庫中各種資料項目的一個程式執行單元(unit)由多個sql語句組成,必須作為一個整體執行
這些sql語句作為一個整體一起向系統提交,要麼都執行、要麼都不執行

文法步驟:
開始事務:BEGIN TRANSACTION --開啟事務
事務提交:COMMIT TRANSACTION --提交操作
交易回復:ROLLBACK TRANSACTION --取消操作

--建表CREATE TABLE [Person]([PersonId]    NVARCHAR(100) PRIMARY KEY ,        ---主鍵[PersonName] NVARCHAR(100) NULL)
/*    如果只有Begin TransAction和Commit TransAction 就算報錯了,也是不會復原的    Select * From Person*/Begin TransAction        Insert Into Person(PersonId,PersonName)Values(‘1‘,‘Name1‘)        Insert Into Person(PersonId,PersonName)Values(‘1‘,‘Name1‘)        Insert Into Person(PersonId,PersonName)Values(‘3‘,‘Name3‘)Commit TransAction/*    如果只有Begin TransAction和RollBack TransAction 就算沒報錯了,還是會復原的    Select * From Person*/--清除資料Delete PersonBegin TransAction        Insert Into Person(PersonId,PersonName)Values(‘1‘,‘Name1‘)        Insert Into Person(PersonId,PersonName)Values(‘1‘,‘Name1‘)        Insert Into Person(PersonId,PersonName)Values(‘3‘,‘Name3‘)RollBack TransAction/*    SET XACT_ABORT ON時,在事務中,若出現錯誤,系統即預設復原事務,但只對非自訂錯誤有效    SET XACT_ABORT OFF,預設值,在事務中,復原一個語句還是整個事務視錯誤的嚴重程式而定,    使用者級錯誤一般不會復原整個事務        Select * From Person*/SET XACT_ABORT ON -- 開啟Begin TransAction        Insert Into Person(PersonId,PersonName)Values(‘1‘,‘Name1‘)        Insert Into Person(PersonId,PersonName)Values(‘1‘,‘Name1‘)        Insert Into Person(PersonId,PersonName)Values(‘3‘,‘Name3‘)Commit TransActionSET XACT_ABORT OFF -- 關閉/*    Try Catch 配合事務使用        Select * From Person*/Begin Try    Begin TransAction        Insert Into Person(PersonId,PersonName)Values(‘1‘,‘Name1‘)        Insert Into Person(PersonId,PersonName)Values(‘1‘,‘Name1‘)        Insert Into Person(PersonId,PersonName)Values(‘3‘,‘Name3‘)    Commit TransActionEnd TryBegin Catch    Rollback TransActionEnd Catch/*    使用全域變數@@Error 配合事務使用        Select * From Person*/DECLARE @tran_error int;SET @tran_error = 0;    Begin TransAction        Insert Into Person(PersonId,PersonName)Values(‘1‘,‘Name1‘)        SET @tran_error = @tran_error + @@ERROR;        print(@tran_error);        Insert Into Person(PersonId,PersonName)Values(‘1‘,‘Name1‘)        SET @tran_error = @tran_error + @@ERROR;        print(@tran_error);        Insert Into Person(PersonId,PersonName)Values(‘3‘,‘Name3‘)        SET @tran_error = @tran_error + @@ERROR;        print(@tran_error);IF(@tran_error > 0)    BEGIN        --執行出錯,復原事務        ROLLBACK TransAction;    ENDELSE    BEGIN        --沒有異常,提交事務        COMMIT TransAction;    END

 

SQLServer事務

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.