隱性事務

簡介,Transact-SQL 隱性事務,API 隱性事務,

簡介

一種連線選項,該選項下連線執行的每個 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 應用程式使用自動提交模式或顯式模式。

相關詞條

熱門詞條

聯絡我們