[MySQL]UNIQUE制約とON DUPLICATE KEY UPDATEの活用法
MySQLのUNIQUE制約を使う事例について紹介します!
UNIQUE制約とは
例えば、itemsという名前のテーブルのitemカラムにUNIQUE制約をつけることによって、そのカラム内の値が一意(ユニーク)であることを保証します。
重複したデータの入力を防ぐことができるため、itemカラムに"table"というデータが既に登録されている場合、同じ"table"というデータをitemカラムにinsertすることはできないということです。
UNIQUE制約の使い方
UNIQUE制約は、テーブル作成時に UNIQUE キーワードを使って指定することができます。
mysql > CREATE TABLE items (
id INT AUTO_INCREMENT PRIMARY KEY,
item VARCHAR(255) UNIQUE,
price INT
);
上記の例では、item カラムにユニーク制約が適用されており、重複した値を持つデータの追加を防ぐことができます。
UNIQUE制約とON DUPLICATE KEY UPDATEを使ってみる
ユニーク制約を設定したカラムに対して、重複したデータが入力された場合、データの挿入(INSERT)が失敗します。
しかし、ON DUPLICATE KEY UPDATE を使うことで、重複したデータが入力された場合に、既存のデータを更新することができます。
以下の例では、item カラムにユニーク制約が適用されており、price カラムに ON DUPLICATE KEY UPDATE が設定されています。
mysql > INSERT INTO items (item, price)
VALUES ('example_item', 1000)
ON DUPLICATE KEY UPDATE price = VALUES(price);
上記のクエリによって、以下の挙動が実現されます。
テーブルに既存の item カラムがINSERTされた場合、price の値を更新します。
テーブルにない新しい item カラムがINSERTされた場合、その item を追加します。
このように、ユニーク制約と ON DUPLICATE KEY UPDATE を組み合わせることで、データベースの管理が容易になり、効率的なデータ操作が可能になります。
まとめ
UNIQUE制約と ON DUPLICATE KEY UPDATE を活用することで、データベース内のデータの一意性を保ちつつ、重複データの入力に対して柔軟に対応できるようになります。
特に、商品情報や在庫管理など、データの追加と更新が頻繁に行われるシステムにおいて、これらの機能は非常に有用です。