Tiếp theo tuyên bố:Snapshot giao dịch cách ly bị hủy bỏ do để cập nhật xung đột
INSERT INTO dbo.Changes([Content], [Date], [UserId], [CompanyId])
VALUES (@1, @2, @3, @4);
SELECT @@identity;
mang lại cho tôi lỗi SQL này 3960:
ly Snapshot giao dịch bị hủy bỏ do để cập nhật xung đột. Bạn không thể sử dụng tính năng cô lập ảnh chụp để truy cập bảng 'dbo.Companies' trực tiếp hoặc gián tiếp trong cơ sở dữ liệu 'myDatabase' để cập nhật, xóa hoặc chèn hàng đã được sửa đổi hoặc xóa bởi một giao dịch khác. Thử lại giao dịch hoặc thay đổi mức cách ly cho tuyên bố cập nhật/xóa .
Theo như tôi đã hiểu, từ thông báo lỗi, tôi không nên cập nhật, xóa hoặc chèn vào bảng dbo.Companies
trong thời gian kết nối khác đang sửa đổi dbo.Companies
.
Nhưng tại sao nó xảy ra khi tôi đã chèn một hàng mới vào một bảng dbo.Changes
(trong đó có chính nước ngoài để dbo.Companies
) và tôi đã không xóa hàng được tham chiếu trong dbo.Companies
, nhưng tôi đã chỉ cập nhật hàng trong dbo.Companies
và không phải là chính Chìa khóa? Điều này sẽ làm việc ok, phải không? (Có một lỗi trong SQL Server?)
UPDATE:
Bàn trông giống như sau:
dbo.Changes([Id] int PK, [Content] nvarchar,
[Date] datetime, [UserId] int, [CompanyId] int -> dbo.Companies.[Id])
dbo.Companies([Id] int PK, [Name] nvarchar)
cập nhật thứ hai được thực hiện:
UPDATE dbo.Companies WHERE [Id] = @1 SET [Name] = @2;
Cảm ơn bạn đã gợi ý, nhưng nó dường như không giúp đỡ. –
Cả hai câu lệnh (INSERT và UPDATE) đều có cùng một khách hàng không? Nếu vậy, chúng tôi không may mắn như tôi biết. –
Có, chèn đang sử dụng id của công ty đang cập nhật. –