Транзакция изоляции моментального снимка прервана из-за конфликта обновления
Следующее утверждение
INSERT INTO dbo.Changes([Content], [Date], [UserId], [CompanyId])
VALUES (@1, @2, @3, @4);
SELECT @@identity;
дает мне эту ошибку SQL 3960:
ранзакция изоляции @Snapshot прервана из-за конфликта обновления. Вы не можете использовать изоляцию моментальных снимков для прямого или косвенного доступа к таблице 'dbo.Companies' в базе данных 'myDatabase', чтобы обновить, удалить или вставить строку, которая была изменена или удалена другой транзакцией. Повторите транзакцию или измените уровень изоляции для оператора update / delete.
Насколько я понял, из сообщения об ошибке не следует обновлять, удалять или вставлять в таблицуdbo.Companies
во время модификации другого соединенияdbo.Companies
.
Но почему это происходит, когда я вставляю новую строку в другую таблицуdbo.Changes
(который имеет внешний ключ кdbo.Companies
) и я не удалял ссылочную строку вdbo.Companies
, но я просто обновлял строку вdbo.Companies
а не первичный ключ? Это должно работать хорошо, не так ли? (Это ошибка в SQL Server?)
ОБНОВИТЬ
Таблицы выглядит следующим образом:
dbo.Changes([Id] int PK, [Content] nvarchar,
[Date] datetime, [UserId] int, [CompanyId] int -> dbo.Companies.[Id])
dbo.Companies([Id] int PK, [Name] nvarchar)
Второе обновление делает:
UPDATE dbo.Companies WHERE [Id] = @1 SET [Name] = @2;