ユニーク制約:OracleのORA-00001あなたはデータを挿入するとき

背景:

理由:

別のテストデータベースで見られるようにインデックステーブルにフィールドが「SEQ_NO」の先端は、データベースから同期されたテーブル内のシーケンス番号が自動的に中断され、データが挿入される次回につながる、SQL自動シートは、固有の制約エラーが発生、データがされているシリアル番号を生成します。もちろん、データや人的ミス、操作の誤った削除は、この問題が発生します。

ソリューション:

まず、我々は確認することができますどのようなものをシート(私のテーブルTBL_ACM_CLAIM)の表のシリアル番号:
DUAL SEQ_ACM_CLAIM.NEXTVALからSELECT

値がテーブルSEQ_NO照会値よりも大きい場合、あなたは意志、比較、結果を照会するために、データの比較表を既存の、何が一度に実行するので、インデックス値が+1インクリメントされず、このSQLを実行しないでくださいインデックス値が更新される(通常は1)ステップ100の設定シーケンスは、以下のSQLを実行し
INCREMENT 100によって配列SEQ_ACM_CLAIMをALTER

注:SEQ_ACM_CLAIMはテーブルではなく、インデックス値の現在の値だけ減少ではなく増加させる改変、変更することができない存在です。

ヒント:

すべてのインデックス検索:
USER_SEQUENCESからSELECT *を;

インデックスの削除:
シーケンスSEQ_ACM_CLAIMを落とし、
インデックスを作成します。
SEQ_ACM_CLAIM TBL_ACM_CLAIM(SEQ_NO)ON UNIQUE INDEXを作成します。

要約:

逃げるためにライブラリを削除し、1秒で十分です。

おすすめ

転載: www.linuxidc.com/Linux/2019-05/158865.htm