Pravděpodobně proto, že nezadáváte hodnotu pro DB_ID
sloupec, tato hodnota je naplněna na úrovni řádku před vložením trigger definovaným v tabulce. Tím spouštěčem je pravděpodobně výběr hodnoty ze sekvence.
Vzhledem k tomu, že data byla přesunuta (pravděpodobně nedávno) z produkční databáze, vsadil bych na to, že když byla data zkopírována, sekvence se také nezměnila. Tipoval bych, že sekvence generuje hodnoty, které jsou mnohem nižší než největší DB_ID
která je aktuálně v tabulce vedoucí k chybě.
Toto podezření můžete potvrdit tím, že se podíváte na spouštěč, abyste zjistili, která sekvence se používá, a proveďte a
SELECT <<sequence name>>.nextval
FROM dual
a porovnat to s
SELECT MAX(db_id)
FROM cmdb_db
Pokud, jak mám podezření, sekvence generuje hodnoty, které již v databázi existují, můžete sekvenci zvyšovat, dokud negeneruje nepoužité hodnoty, nebo ji můžete změnit tak, aby nastavila hodnotu INCREMENT
na něco velmi velkého, jednou získejte nextval a nastavte INCREMENT
zpět na 1.