Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Violation de la contrainte PRIMARY KEY erreur SQL

De par sa conception, votre table [cresql].[dbo].[AR_Transactions] est censé contenir une seule valeur pour la clé primaire - dans votre cas, cela semble être une combinaison de colonnes qui composent ce PK.

Ce n'est pas un problème SQL, mais semble être un concept de conception.

Vous devriez savoir quelle combinaison de clés constitue votre clé primaire - il se peut que la conception indique que vous pouvez insérer une fois et mettre à jour ultérieurement pour cette combinaison (bien que je ne considère pas cela comme une bonne conception).

MODIFIER

Étant donné que Trans_Id est le PK et que vous n'utilisez pas cette colonne dans votre insertion, elle est soit insérée en tant qu'IDENTITY, en tant que DEFAULT (brrrrr) ou en utilisant un TRIGGER.

IDENTITÉ : Vérifiez si la spécification IDENTITY est foutue. Si c'est le cas, réinitialisez-le simplement. Voici comment Comment puis-je réamorcer une colonne d'identité dans une variable de table T-SQL ?

PAR DÉFAUT : C'est un choix étrange, et vous devrez peut-être demander à celui qui a conçu la base de données, lire la documentation ou simplement le découvrir par vous-même. En tout cas, c'est un choix très rare.

DÉCLENCHEUR : Trouvez le déclencheur et lisez le code pour voir ce qu'il fait. Voici comment trouver une liste de déclencheurs Quel est le moyen le plus portable de vérifier si un déclencheur existe dans SQL Server ?

Scénario alternatif :

Il peut y avoir un déclencheur qui s'insère dans une table AUDIT qui peut avoir le problème. Vérifiez si le tableau contient d'autres déclencheurs et voyez ce qu'ils font.