おそらく、DB_ID
の値を指定していないためです。 列の場合、その値は、テーブルで定義された挿入トリガーの前に行レベルで入力されます。そのトリガーは、おそらく、シーケンスから値を選択することです。
データは(おそらく最近)本番データベースから移動されたので、私の賭けは、データがコピーされたときにシーケンスも変更されなかったということです。シーケンスは、最大のDB_ID
よりもはるかに低い値を生成していると思います それは現在、エラーの原因となっているテーブルにあります。
トリガーを調べて使用されているシーケンスを判別し、
を実行することで、この疑いを確認できます。SELECT <<sequence name>>.nextval
FROM dual
それを
と比較しますSELECT MAX(db_id)
FROM cmdb_db
おそらく、シーケンスがデータベースにすでに存在する値を生成している場合は、未使用の値を生成するまでシーケンスをインクリメントするか、シーケンスを変更してINCREMENT
を設定できます。 非常に大きなものに変更し、nextvalを1回取得して、INCREMENT
を設定します。 1に戻ります。