sql >> Database >  >> RDS >> Oracle

Unieke beperkingsschending tijdens invoegen:waarom? (Orakel)

Vermoedelijk, aangezien u geen waarde opgeeft voor de DB_ID kolom, wordt die waarde ingevuld door een rijniveau vóór de invoegtrigger die in de tabel is gedefinieerd. Die trigger is vermoedelijk het selecteren van de waarde uit een reeks.

Aangezien de gegevens (vermoedelijk recent) uit de productiedatabase zijn verplaatst, zou ik durven wedden dat wanneer de gegevens werden gekopieerd, de volgorde niet ook werd gewijzigd. Ik vermoed dat de reeks waarden genereert die veel lager zijn dan de grootste DB_ID die momenteel in de tabel staat die tot de fout leidt.

U kunt dit vermoeden bevestigen door naar de trigger te kijken om te bepalen welke reeks wordt gebruikt en door een

SELECT <<sequence name>>.nextval
  FROM dual

en dat te vergelijken met

SELECT MAX(db_id)
  FROM cmdb_db

Als, zoals ik vermoed, de reeks waarden genereert die al in de database bestaan, kunt u de reeks verhogen totdat deze ongebruikte waarden genereert of u kunt deze wijzigen om de INCREMENT in te stellen. naar iets heel groots, verkrijg de nextval eenmaal en stel de INCREMENT . in terug naar 1.



  1. Gegevens invoegen in Mysql in Malayalam

  2. Hoe tekstinvoer te gebruiken als kolomnaam (-namen) in een Postgres-functie?

  3. Hoe het aantal dagen in postgresql datetime toe te voegen

  4. Waarom kan ik via shell verbinding maken met MySQL, maar niet via Python?