Sql Server 三種事務模式

來源:互聯網
上載者:User

明確交易
明確交易(Explicit Transaction)是由設計人員明確定義事務的啟動與結束的一種事務。
可使用 BEGIN TRANSACTION、COMMIT TRANSACTION、COMMIT WORK、ROLLBACK TRANSACTION、ROLLBACK WORK 等語句來定義明確交易。

 

Create PROCEDURE sp_test(@ID varchar(50))
AS 
Begin Tran --事務開始 
Update Tb set CDate=getdate() where TbID=@ID 
if @@ERROR >0 --若有錯誤 
BEGIN 
    ROLLBACK TRAN --事務還原 
    Return 
End 
DECLARE @PID varchar(50),@TbQty int 
DECLARE cur_1 CURSOR FOR SELECT PID, Qty FROM TbDetail where TbID=@ID --聲明遊標資料事務 
OPEN cur_1 --開啟遊標 
FETCH NEXT FROM cur_1 INTO @PID,@TbQty --從遊標擷取兩個欄位值到變數 
WHILE @@FETCH_STATUS = 0 --用迴圈逐項處理 
BEGIN 
    Update Ta set TaQty=TaQty-@TbQty where PID=@PID 
    FETCH NEXT FROM cur_1 INTO @PID,@TbQty 
    if @@ERROR >0 –若有錯誤 
    Begin
        ROLLBACK TRAN --事務還原 
        CLOSE cur_1 --關閉及釋放遊標 
        DEALLOCATE cur_1 
        BREAK 
    END 
END 
CLOSE cur_1 
DEALLOCATE cur_1 
COMMIT TRAN --事務提交 

 

 

自動認可事務
這是 SQL Server 的預設模式,所有未特別聲明的事務,都被視為自動認可的事務。但
是只以一個操作作為事務範圍,如一個 Update 或 Delete 等。當事務完成時,每個單獨的
T-SQL 陳述式都將被提交或因出現錯誤而還原。

隱含交易
通過 API 函數或 T-SQL 的 SET IMPLICIT_TRANSACTIONS ON 語句將隱含交易模式
設定為開啟。下一個語句會自動開始一項新的事務。當該項事務完成時,下一個 T-SQL 語
句會再開始一項新的事務。

SET IMPLICIT_TRANSACTIONS ON 
 
INSERT INTO Ta (aa,bb) VALUES ('11', '22') 
COMMIT TRANSACTION 
GO 

 

以上程式表示先使用“SET IMPLICIT_TRANSACTIONS ON”啟動隱含交易,然後在
下一行程式建立事務,以 Insert 語句添加一項記錄至 Category 資料表,最後再用 COMMIT
TRANSACTION 提交事務。提交之後若還有程式,會再開始新的事務。總之,隱含交易的
意思是由 SQL Server 系統在所有提交、還原之後,自動建立新事務。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.