隱性事務

隱性事務是計算機編程SQL資料庫語言的操作命令。當連線以隱性事務模式進行操作時,SQL Server將在提交或回滾當前事務後自動啟動新事務。無須描述事務的開始,只需提交或回滾每個事務。隱性事務模式生成連續的事務鏈。

一、簡介

一種連線選項,該選項下連線執行的每個 SQL 語句都視為單獨的事務

二、Transact-SQL 隱性事務

DB-Library 應用程式和 Transact-SQL 腳本使用 Transact-SQL SET IMPLICIT_TRANSACTIONS ON 語句啟動隱性事務模式。使用 SET IMPLICIT_TRANSACTIONS OFF 語句關閉隱性事務模式。使用 COMMIT TRANSACTION、COMMIT WORK、ROLLBACK TRANSACTION 或 ROLLBACK WORK 語句結束每個事務。
SET QUOTED_IDENTIFIER OFF
GO
SET NOCOUNT OFF
GO
USE pubs
GO
CREATE TABLE ImplicitTran (Cola int PRIMARY KEY,
Colb char(3) NOT NULL)
GO
SET IMPLICIT_TRANSACTIONS ON
GO
/* First implicit transaction started by an INSERT statement */
INSERT INTO ImplicitTran VALUES (1, 'aaa')
GO
INSERT INTO ImplicitTran VALUES (2, 'bbb')
GO
/* Commit first transaction */
COMMIT TRANSACTION
GO
/* Second implicit transaction started by a SELECT statement */
SELECT COUNT(*) FROM ImplicitTran
GO
INSERT INTO ImplicitTran VALUES (3, 'ccc')
GO
SELECT * FROM ImplicitTran
GO
/* Commit second transaction */
COMMIT TRANSACTION
GO
SET IMPLICIT_TRANSACTIONS OFF
GO

三、API 隱性事務

用來設定隱性事務API 機制是 ODBC OLE DB
ODBC 調用 SQLSetConnectAttr 函式啟動隱性事務模式,其中 Attribute 設定為 SQL_ATTR_AUTOCOMMIT,ValuePtr 設定為 SQL_AUTOCOMMIT_OFF。
在調用 SQLSetConnectAttr 之前,連線將一直保持為隱性事務模式。其中 Attribute 設定為 SQL_ATTR_AUTOCOMMIT,ValuePtr 設定為 SQL_AUTOCOMMIT_ON。
調用 SQLEndTran 函式提交或回滾每個事務,其中 CompletionType 設定為 SQL_COMMIT 或 SQL_ROLLBACK。
當 SQL_AUTOCOMMIT_OFF 由 ODBC 應用程式設定時,Microsoft® SQL Server™ ODBC 驅動程式發出 SET IMPLICIT_TRANSACTION ON 語句。
OLE DB
OLE DB 沒有專門用來設定隱性事務模式的方法。 調用 ITransactionLocal::StartTransaction 方法啟動顯式模式。
當調用 ITransaction::Commit 或 ITransaction::Abort 方法(其中 fRetaining 設定為 TRUE)時,OLE DB 將完成當前的事務並進入隱性事務模式。只要將 ITransaction::Commit 或 ITransaction::Abort 中的 fRetaining 設定為 TRUE,那么連線就將保持隱性事務模式。
調用 ITransaction::Commit 或 ITransaction::Abort(其中 fRetaining 設定為 FALSE)停止隱性事務模式。
ADO
ADO 不支持隱性事務。ADO 應用程式使用自動提交模式或顯式模式。

相關詞條

相關搜尋

熱門詞條

聯絡我們