Przypuszczalnie, ponieważ nie podajesz wartości dla DB_ID
kolumna, ta wartość jest wypełniana przez poziom wiersza przed wyzwalaczem wstawiania zdefiniowanym w tabeli. Prawdopodobnie tym wyzwalaczem jest wybór wartości z sekwencji.
Ponieważ dane zostały przeniesione (prawdopodobnie niedawno) z produkcyjnej bazy danych, założę się, że po skopiowaniu danych sekwencja również nie została zmodyfikowana. Domyślam się, że sekwencja generuje wartości, które są znacznie niższe niż największy DB_ID
który jest aktualnie w tabeli prowadzącej do błędu.
Możesz potwierdzić to podejrzenie, patrząc na wyzwalacz, aby określić, która sekwencja jest używana, i wykonując
SELECT <<sequence name>>.nextval
FROM dual
i porównując to z
SELECT MAX(db_id)
FROM cmdb_db
Jeśli, jak podejrzewam, sekwencja generuje wartości, które już istnieją w bazie danych, możesz inkrementować sekwencję, aż generuje nieużywane wartości lub możesz to zmienić, aby ustawić INCREMENT
na coś bardzo dużego, pobierz nextval raz i ustaw INCREMENT
wróć do 1.