siguiente declaración:abortado debido al conflicto actualizar
INSERT INTO dbo.Changes([Content], [Date], [UserId], [CompanyId])
VALUES (@1, @2, @3, @4);
SELECT @@identity;
me da este error SQL 3960:
transacción de aislamiento de instantánea abortado debido a la actualización de los conflictos. Usted no puede usar el aislamiento de instantáneas para acceder a la tabla 'dbo.Companies' directamente o indirectamente en la base de datos 'myDatabase' para actualizar, eliminar o insertar la fila que ha sido modificada o eliminada por otra transacción. Vuelva a intentar la transacción o cambie el nivel de aislamiento para la declaración de actualización/eliminación .
Por lo que he entendido, desde el mensaje de error, no debería actualizar, eliminar o insertar a la mesa dbo.Companies
durante el tiempo de otra conexión está modificando dbo.Companies
.
Pero por qué se produce cuando estaba insertar una nueva fila a otra mesa dbo.Changes
(que tiene la clave externa a dbo.Companies
) y no estaba borrando la fila hace referencia en dbo.Companies
, pero estaba actualizando fila de dbo.Companies
y no primaria ¿llave? Esto debería funcionar bien, ¿no es así? (¿Es un error en SQL Server?)
ACTUALIZACIÓN:
Tablas se parece a lo siguiente:
dbo.Changes([Id] int PK, [Content] nvarchar,
[Date] datetime, [UserId] int, [CompanyId] int -> dbo.Companies.[Id])
dbo.Companies([Id] int PK, [Name] nvarchar)
Segunda actualización está haciendo:
UPDATE dbo.Companies WHERE [Id] = @1 SET [Name] = @2;
Gracias por las sugerencias, pero no parece ser de ayuda. –
¿Ambas declaraciones (INSERTAR y ACTUALIZAR) se refieren al mismo Cliente? Si es así, no tenemos suerte hasta donde yo sé. –
Sí, insertar está usando el ID de la empresa que se está actualizando actualmente. –