Formentlig, da du ikke angiver en værdi for DB_ID
kolonne, udfyldes denne værdi af et række-niveau før indsættelsesudløser defineret i tabellen. Den trigger er formodentlig at vælge værdien fra en sekvens.
Da dataene blev flyttet (formodentlig for nylig) fra produktionsdatabasen, ville min indsats være, at når dataene blev kopieret, blev sekvensen ikke også ændret. Jeg vil gætte på, at sekvensen genererer værdier, der er meget lavere end den største DB_ID
som i øjeblikket er i tabellen, der fører til fejlen.
Du kan bekræfte denne mistanke ved at se på triggeren for at afgøre, hvilken sekvens der bruges og gøre en
SELECT <<sequence name>>.nextval
FROM dual
og sammenligne det med
SELECT MAX(db_id)
FROM cmdb_db
Hvis, som jeg formoder, genererer sekvensen værdier, der allerede findes i databasen, kan du øge sekvensen, indtil den genererer ubrugte værdier, eller du kan ændre den for at indstille INCREMENT
til noget meget stort, få næste val en gang, og indstil INCREMENT
tilbage til 1.