sql >> Databasteknik >  >> RDS >> Sqlserver

Brott mot PRIMARY KEY constraint error SQL

Genom design, din tabell [cresql].[dbo].[AR_Transactions] antas bara innehålla ett värde för primärnyckeln - i ditt fall verkar detta vara en kombination av kolumner som utgör denna PK.

Detta är inte ett SQL-problem, utan verkar vara ett designkoncept.

Du bör ta reda på vilken kombination av nycklar som utgör din primära nyckel - det kan vara så att designen säger att du kan infoga en gång och uppdatera senare för den kombinationen (även om jag inte skulle anse att detta är bra design).

REDIGERA

Eftersom Trans_Id är PK:n och du inte använder den kolumnen i din infogning, infogas den antingen som IDENTITY, som en DEFAULT (brrrrr) eller använder en TRIGGER.

IDENTITET: Kontrollera om IDENTITY-specifikationen är skruvad. Om så är fallet, återställ det bara. Så här Hur kan jag se om en identitetskolumn i en T-SQL-tabellvariabel?

STANDARD: Detta är ett udda val, och du kanske måste fråga den som designade databasen, läsa dokumentationen eller helt enkelt ta reda på det på egen hand. I vilket fall som helst är detta ett mycket ovanligt val.

TRIGGER: Hitta triggern och läs igenom koden för att se vad den gör. Så här hittar du en lista med triggers Vilket är det mest portabla sättet att kontrollera om en utlösare finns i SQL Server?

Alternativt scenario:

Det kan finnas en trigger som sätts in i en AUDIT-tabell som kan ha problemet. Kontrollera om tabellen har några andra triggers och se vad de gör.




  1. MySQL SELECT-sats där värdet är i array

  2. Postgres now() tidsstämpel ändras inte när skriptet fungerar

  3. Viloläge skicka främmande frågor till databasen

  4. Node MySQL exekvera flera frågor så snabbt som möjligt