Transakcja izolacji migawki została przerwana z powodu konfliktu aktualizacji

Poniższe oświadczenie:

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

podaje mi ten błąd SQL 3960:

Transakcja izolacji migawki została przerwana z powodu konfliktu aktualizacji. Nie można użyć izolacji migawki do dostępu do tabeli „dbo.Companies” bezpośrednio lub pośrednio w bazie danych „myDatabase”, aby zaktualizować, usunąć lub wstawić wiersz, który został zmodyfikowany lub usunięty przez inną transakcję. Ponów próbę transakcji lub zmień poziom izolacji dla instrukcji update / delete.

O ile zrozumiałem, z komunikatu o błędzie nie powinienem aktualizować, usuwać ani wstawiać do tabelidbo.Companies w czasie modyfikowania innego połączeniadbo.Companies.

Ale dlaczego występuje, gdy wstawiałem nowy wiersz do innej tabelidbo.Changes (który ma klucz obcy dodbo.Companies) i nie usunąłem wskazanego wiersza wdbo.Companies, ale właśnie aktualizowałem wierszdbo.Companies a nie klucz podstawowy? To powinno działać dobrze, prawda? (Czy to błąd w SQL Server?)

AKTUALIZACJA:

Tabele wyglądają następująco:

dbo.Changes([Id] int PK, [Content] nvarchar, 
  [Date] datetime, [UserId] int, [CompanyId] int -> dbo.Companies.[Id])
dbo.Companies([Id] int PK, [Name] nvarchar)

Druga aktualizacja:

UPDATE dbo.Companies WHERE [Id] = @1 SET [Name] = @2;

questionAnswers(2)

yourAnswerToTheQuestion