- TOP
- 技術情報
- Oracle DB Tips
- ORA-02290:チェック制約(???.???)に違反しました
KNOWLEDGE
コーソルの技術情報
KNOWLEDGE検索
コーソルでは経験豊かなエンジニアが、Oracle Databaseに関するお役立ち情報を発信しています。
データベースのチューニングや設定にお役立ていただけます。
コーソルの技術情報
KNOWLEDGE検索
コーソルでは経験豊かなエンジニアが、Oracle Databaseに関するお役立ち情報を発信しています。
データベースのチューニングや設定にお役立ていただけます。
Oracle DB Tips
挿入しようとしている値が、指定されたチェック制約を満たしていない場合に発生するエラーです。
以下にORA-02290エラーの発生例を示します。
SQL> create table tab1 (col1 varchar2(10)); 表が作成されました。 SQL> alter table tab1 add constraint tab1_ck 2 check( not REGEXP_LIKE(col1,'[^(A-z)(0-9)]')); 表が変更されました。 SQL> insert into tab1 values('1'); 1行が作成されました。 SQL> insert into tab1 values('10'); 1行が作成されました。 SQL> insert into tab1 values('a'); 1行が作成されました。 SQL> insert into tab1 values('A'); 1行が作成されました。 SQL> insert into tab1 values('"'); insert into tab1 values('"') * 行1でエラーが発生しました。: ORA-02290: チェック制約(SCOTT.TAB1_CK)に違反しました
上記のケースでは、col1列にはアルファベットか数字のみが指定できるようチェック制約が作成されています。そのため、記号を挿入しようとした際にはチェック制約に違反するといったエラーが発生します。
挿入しようとしている値が、指定されたチェック制約を満たしていない場合に発生します。制約に違反する値を挿入しないことが、対処方法となります。
チェック 制約によって、表の各行に必要な条件を指定できます。
制約を満たすためには、表のそれぞれの行が、その条件に対してTRUE または不明(NULL のため)のいずれかである必要があります。
特定の行に対するCHECK 制約条件が評価される場合、条件にある列名に、その行の列値が適用されます。
ORA-02290