重複プライマリキーの場合にデータ更新をするSQL

  • 2016-5-16
  • 重複プライマリキーの場合にデータ更新をするSQL はコメントを受け付けていません。

通常、プライマリキーが重複するINSERT処理はエラーとなりデータの追加ができません。
以下の2パターンのいずれかの手法をとることで、プライマリキーが重複する場合に、既存のレコードを更新する処理を行うことができます。

■REPLACE INTO構文
プライマリキーが重複する場合には、一度元レコードを削除して新しいデータでINSERT処理を行う構文です。

【SQL例】
REPLACE INTO test
(text,created,updated)
VALUES
('テスト',NOW(),NOW());

※REPLACE INTOでは一度レコードを削除するため、上記のSQLを実行するとcreatedの日時がSQLを実行したときの日時となっていしまいます。
もし、createdの日時を変えたくない場合には、以下のON DUPLICATE KEY UPDATE構文を利用します。

■ON DUPLICATE KEY UPDATE
プライマリキーが重複する場合には、元レコードを削除せず指定されたデータをUPDATEする構文です。

【SQL例】
INSERT INTO test
(text,created,updated)
VALUES
('テスト',NOW(),NOW())
ON DUPLICATE KEY UPDATE
text = VALUES(test),
updated = VALUES(updated)

関連記事

コメントは利用できません。

ページ上部へ戻る