以下のように表示されます。
(日本語)
ORA-02299: (XXX.XXX)を検証できません - キーが重複しています。
(英語)
ORA-02299: cannot validate (XXX.XXX) - duplicate keys found
XXX.XXXの箇所には、テーブル名.制約名が表示されます
発生パターン
このエラーは以下のような場合に発生します。
- テーブルに一意制約を追加する時、既に一意制約に違反するデータが存在している
- エラー例
- SQL> ALTER TABLE test ADD CONSTRAINT myconstraint UNIQUE(col1); ALTER TABLE test ADD CONSTRAINT myconstraint UNIQUE(col1); * 行1でエラーが発生しました。: ORA-02299: (SCOTT.MYCONSTRAINT)を検証できません - キーが重複しています。
testテーブルのcol1列に一意制約を追加しようとしたが、既にcol1列に重複しているデータが存在しているためにエラーが発生しています。
col1列に存在する重複データを無くしてから実行すれば成功します。
対処法
- テーブルに一意制約を追加する時は、重複データを取り除いてから制約を追加する
備考
- 重複しているデータを無くせば列データが存在していてもOKです。
(対象列データを全てNULLにする必要はありません。)