もちろん、次のように INSERT IGNORE INTO を使用できます。
INSERT IGNORE INTO beer(name, type, alcohol_by_volume, description, image_url) VALUES('{$name}', {$type}, '{$alcohol_by_volume}', '{$description}', '{$image_url}')
同様に使用できますON DUPLICATE KEY
が、行を追加したくない場合INSERT IGNORE INTO
は、より良い選択です。ON DUPLICATE KEY
重複がある場合に、より具体的なことをしたい場合に適しています。
使用する場合はON DUPLICATE KEY
、複数の一意のインデックスを持つテーブルでこの句を使用しないでください。複数の一意のインデックスを持つテーブルがある場合、ON DUPLICATE KEY
句は予期しない結果をもたらす可能性があります (実際に何が起こるかを 100% 制御することはできません)。
例: - 以下の行は、1 つの行のみを更新します (タイプが 1 で、alcohol_by_volume が 1 の場合 (両方の列が一意のインデックスである場合))。
ON DUPLICATE KEY UPDATE beer SET type=3 WHERE type=1 or alcohol_by_volume=1
要約すると:
ON DUPLICATE KEY
重複がある場合、警告やエラーなしで作業を行います。
INSERT IGNORE INTO
重複がある場合は警告をスローしますが、それ以外に、重複をデータベースに挿入することを無視します。