Назад | Перейти на главную страницу

MS-SQL Server Implicit_transaction в таблице

Я пытаюсь поэкспериментировать с implicit_transaction на сервере sql. Однако после выполнения:

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, запрос зависает.

Что я сделал не так?

Из документации:

Транзакции, которые автоматически открываются в результате включения этого параметра, должны быть явно зафиксированы или отменены пользователем в конце транзакции. В противном случае транзакция и все содержащиеся в ней изменения данных откатываются, когда пользователь отключается. После подтверждения транзакции выполнение одного из приведенных выше операторов запускает новую транзакцию.

Итак, по сути, вы сделали это:

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

Короче говоря, у вас есть открытая транзакция, с которой нужно что-то делать.