ユニーク制約などの違反時にもエラーを発生させずに終了
広告
テーブルの中のカラムにプライマリーキー制約やユニーク制約が設定されている場合に、データを追加すると制約違反となる場合があります。このような場合通常はエラーとなりますが、エラーを発生させずに終了させるにはIGNOREを指定します。
INSERT IGNORE INTO tbl_name (col_name1, col_name2, ...) VALUES (value1, value2, ...);
IGNOREを指定した場合、追加するデータでユニーク制約などの違反があった場合にもエラーを発生させません。ただしその場合でもデータの追加は行われません。
では実際に試してみます。次のようなテーブルを作成しました。
mysql> create table personal(id int unique, name varchar(20));
「id」カラムにはユニーク制約が設定してありますので、重複した値を持つことはできません。
データをいくつか追加しておきます。
ではまずIGNOREを付けずにユニーク制約の違反となるようなデータを追加してみます。
ユニーク制約に違反しているためエラーが発生しました。
今度はIGNOREを付けてINSERT文を実行してみます。
mysql> insert ignore into personal values (2, '堀部');
このようにエラーを出さずに終了しました。ただエラーが発生していないだけでデータは追加されていません。実際にテーブルからデータを取得してみても次のように変更ないことが確認できます。
( Written by Tatsuo Ikura )