sql >> Base de Datos >  >> RDS >> Sqlserver

Violación del error de restricción PRIMARY KEY SQL

Por diseño, su tabla [cresql].[dbo].[AR_Transactions] se supone que contiene solo un valor para la clave principal; en su caso, esto parece ser una combinación de columnas que componen este PK.

Esto no es un problema de SQL, pero parece ser un concepto de diseño.

Debe averiguar qué combinación de teclas está formando su clave principal; puede ser que el diseño indique que puede insertar una vez y actualizar más tarde para esa combinación (aunque no lo consideraría un buen diseño).

EDITAR

Dado que Trans_Id es el PK, y no está usando esa columna en su inserción, se está insertando como IDENTIDAD, como DEFAULT (brrrrr) o usando un TRIGGER.

IDENTIDAD: Verifique si la especificación de IDENTIDAD está mal. Si es así, simplemente reinícielo. Aquí se explica cómo ¿Cómo puedo restablecer una columna de identidad en una variable de tabla T-SQL?

POR DEFECTO: Esta es una elección extraña, y es posible que deba preguntarle al que diseñó la base de datos, leer la documentación o simplemente resolverlo por su cuenta. En cualquier caso, esta es una elección muy poco común.

DISPARADOR: Encuentre el activador y lea el código para ver qué está haciendo. Aquí se explica cómo encontrar una lista de activadores -trigger-exists-in-sql-server">¿Cuál es la forma más portátil de verificar si existe un disparador en SQL Server?

Escenario alternativo:

Podría haber un activador que se inserte en una tabla AUDIT que pueda tener el problema. Compruebe si la tabla tiene otros factores desencadenantes y vea qué hacen.