- TOP
- 技術情報
- Oracle DB Tips
- ORA-02293: チェック制約(??.??)に違反しました
KNOWLEDGE
コーソルの技術情報
KNOWLEDGE検索
コーソルでは経験豊かなエンジニアが、Oracle Databaseに関するお役立ち情報を発信しています。
データベースのチューニングや設定にお役立ていただけます。
コーソルの技術情報
KNOWLEDGE検索
コーソルでは経験豊かなエンジニアが、Oracle Databaseに関するお役立ち情報を発信しています。
データベースのチューニングや設定にお役立ていただけます。
Oracle DB Tips
表にチェック制約を設定した場合、または、一時的に無効化したチェック制約を有効化した場合に、表に存在するデータがそのチェック制約に違反していた場合、ORA-02293エラーが発生します。
SQL> alter table test add constraint CON1 check ( col_a in ( 'a' , 'b' )); alter table test add constraint CON1 check ( col_a in ( 'a' , 'b' )) * 行1でエラーが発生しました。: ORA-02293: (TEST.CON1)を検証できません - チェック制約違反です。
ORA-01950は一般に以下の要因で発生します。
いずれの場合もチェック制約に違反するデータを修正してから、エラーが発生した操作を再実行する必要があります。
SQL> create table test 2 ( 3 id number 4 , col_a char(1) 5 ); 表が作成されました。 SQL> insert into test (id , col_a) values (1 , 'c'); 1行が作成されました。 SQL> commit; コミットが完了しました。 SQL> alter table test add constraint CON1 check ( col_a in ( 'a' , 'b' )); alter table test add constraint CON1 check ( col_a in ( 'a' , 'b' )) * 行1でエラーが発生しました。: ORA-02293: (TEST.CON1)を検証できません - チェック制約違反です。
SQL> create table test 2 ( 3 id number 4 , col_a char(1) constraint CON1 check ( col_a in ( 'a' , 'b' )) 5 ); 表が作成されました。 SQL> alter table test disable constraint con1; 表が変更されました。 SQL> insert into test (id , col_a) values (1 , 'c'); 1行が作成されました。 SQL> commit; コミットが完了しました。 SQL> alter table test enable constraint con1; alter table test enable constraint con1 * 行1でエラーが発生しました。: ORA-02293: (TEST.CON1)を検証できません - チェック制約違反です。
ORA-02293 ORA-2293 チェック制約 CHECK