Транзакция изоляции моментального снимка прервана из-за конфликта обновления

Следующее утверждение:

INSERT INTO dbo.Changes([Content], [Date], [UserId], [CompanyId]) 
  VALUES (@1, @2, @3, @4);
SELECT @@identity;

дает мне эту ошибку SQL 3960:

Транзакция изоляции моментального снимка прервана из-за конфликта обновления. Ты нельзя использовать изоляцию моментальных снимков для прямого доступа к таблице «dbo.Companies» или косвенно в базе данных myDatabase для обновления, удаления или вставки строка, которая была изменена или удалена другой транзакцией. Повторите транзакцию или измените уровень изоляции для оператор обновления/удаления.

Насколько я понял из сообщения об ошибке, я не должен обновлять, удалять или вставлять в таблицу dbo.Компаниив то время, когда другое соединение модифицирует 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;
12
задан TN. 23 May 2012 в 11:52
поделиться