Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Violazione dell'errore di vincolo PRIMARY KEY SQL

In base alla progettazione, la tua tabella [cresql].[dbo].[AR_Transactions] dovrebbe contenere un solo valore per la chiave primaria:nel tuo caso, questa sembra essere una combinazione di colonne che compongono questo PK.

Questo non è un problema di SQL, ma sembra essere un concetto di design.

Dovresti scoprire quale combinazione di chiavi costituisce la tua chiave primaria:è possibile che il design indichi che puoi inserirlo una volta e aggiornare in seguito per quella combinazione (anche se non lo considero un buon design).

MODIFICA

Poiché Trans_Id è il PK e non stai utilizzando quella colonna nel tuo inserto, viene inserita come IDENTITÀ, come PREDEFINITO (brrrrr) o utilizzando un TRIGGER.

IDENTITÀ: Controlla se la specifica IDENTITY è sbagliata. In tal caso, ripristinalo. Ecco come Come posso eseguire il reseeding di una colonna Identity in una variabile di tabella T-SQL?

DEFAULT: Questa è una scelta strana e potresti dover chiedere a colui che ha progettato il database, leggere la documentazione o semplicemente capirlo da solo. In ogni caso, questa è una scelta molto rara.

TRIGGER: Trova il trigger e leggi il codice per vedere cosa sta facendo. Ecco come trovare un elenco di trigger Qual ​​è il modo più portabile per verificare se esiste un trigger in SQL Server?

Scenario alternativo:

Potrebbe esserci un trigger che si inserisce in una tabella AUDIT che potrebbe avere il problema. Controlla se la tabella ha altri attivatori e guarda cosa fanno.