Я пытаюсь поэкспериментировать с 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
Короче говоря, у вас есть открытая транзакция, с которой нужно что-то делать.