INSERT IGNOREとは?
- INSERT句に付与可能な修飾子
- レコード登録時に無視可能なエラーが発生した場合に無視してレコード登録できる
INSERT ステートメントの実行中に発生する無視可能なエラーは無視されます
無視されるエラー一覧
ER_BAD_NULL_ERROR ER_DUP_ENTRY ER_DUP_ENTRY_WITH_KEY_NAME ER_DUP_KEY ER_NO_PARTITION_FOR_GIVEN_VALUE ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT ER_NO_REFERENCED_ROW_2 ER_ROW_DOES_NOT_MATCH_GIVEN_PARTITION_SET ER_ROW_IS_REFERENCED_2 ER_SUBQUERY_NO_1_ROW ER_VIEW_CHECK_FAILED
INSERT IGNOREのクエリ
SELECT * FROM sample_table; +----+ | ID | +----+ | 1 | | 2 | +----+ INSERT IGNORE INTO sample_table (member_id) -> VALUES (1), -> (3) Query OK, 1 row affected, 1 warning (0.00 sec) Records: 2 Duplicates: 1 Warnings: 1 -- 重複したKeyのレコードは無視され、重複なしのレコードがINSERTされている SELECT * FROM sample_table; +----+ | ID | +----+ | 1 | | 2 | | 3 | +----+
ただし、NOT NULL制約にしている項目でもレコードが作成されてしまう懸念があり、 INSERT IGNOREは基本使わないほうが良いとのこと。