Sql-Server

表上的 MS-SQL Server Implicit_transaction

  • September 17, 2014

我正在嘗試在 sql server 上嘗試implicit_transaction。但是,執行後:

SET IMPLICIT_TRANSACTIONS ON;

INSERT INTO [Interface].[dbo].[Log] ([String], [Time], [theUser]) VALUES ((SELECT [String] FROM [Interface].[dbo].[Log] WHERE [ID] = '128'), null, 'ROW3');

SET IMPLICIT_TRANSACTIONS OFF;

但是,當我進行 SELECT 時,查詢會掛起。

我做錯什麼了?

從文件中:

由於此設置為 ON 而自動打開的事務必須在事務結束時由使用者顯式送出或回滾。否則,當使用者斷開連接時,事務及其包含的所有數據更改都會回滾。送出事務後,執行上述語句之一會啟動新事務。

所以,實際上,你這樣做了:

begin transaction;
INSERT INTO [Interface].[dbo].[Log] ([String], [Time], [theUser]) 
VALUES ((SELECT [String] FROM [Interface].[dbo].[Log] WHERE [ID] = '128'), null, 'ROW3');
--no commit or rollback, so transaction is still open

簡而言之,您有一個需要處理的未結交易。

引用自:https://serverfault.com/questions/629235