sql >> Database >  >> RDS >> Sqlserver

Schending van PRIMARY KEY-beperkingsfout SQL

Door het ontwerp is uw tabel [cresql].[dbo].[AR_Transactions] wordt verondersteld slechts één waarde voor de primaire sleutel te bevatten - in uw geval lijkt dit een combinatie van kolommen te zijn die deze PK vormen.

Dit is geen SQL-probleem, maar lijkt een ontwerpconcept te zijn.

U moet uitzoeken welke combinatie van toetsen uw primaire sleutel vormt - het kan zijn dat in het ontwerp staat dat u één keer kunt invoegen en later kunt bijwerken voor die combinatie (hoewel ik dit niet als een goed ontwerp zou beschouwen).

BEWERKEN

Aangezien Trans_Id de PK is en u die kolom niet in uw invoeging gebruikt, wordt deze ofwel ingevoegd als IDENTITEIT, als STANDAARD (brrrrr) of met behulp van een TRIGGER.

IDENTITEIT: Controleer of de IDENTITY-specificatie is verknoeid. Zo ja, reset hem dan gewoon. Hier leest u hoe u Hoe kan ik een identiteitskolom in een T-SQL-tabelvariabele opnieuw plaatsen?

STANDAARD: Dit is een vreemde keuze, en het kan zijn dat je degene die de database heeft ontworpen, de documentatie moet vragen, of het gewoon zelf moet uitzoeken. Dit is in ieder geval een zeer ongebruikelijke keuze.

TRIGGER: Zoek de trigger en lees de code door om te zien wat deze doet. Hier leest u hoe u een lijst met triggers kunt vinden Wat is de meest draagbare manier om te controleren of er een trigger bestaat in SQL Server?

Alternatief scenario:

Er kan een trigger zijn die wordt ingevoegd in een AUDIT-tabel die mogelijk het probleem heeft. Controleer of de tafel andere triggers heeft en kijk wat ze doen.




  1. Hoe deze MySQL-query te verbeteren met join?

  2. Een overzicht van PostgreSQL 13 libpq sslpassword-verbindingsparameters

  3. Meerdere tabellen hernoemen

  4. Hoe vind en vervang ik in een CSV die ik importeer met mysql