複製鏈接
請複製以下鏈接發送給好友

隱性事務

鎖定
隱性事務是一種連接選項,該選項下連接執行的每個 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 應用程序使用自動提交模式或顯式模式。