1. ホーム
  2. マイスル

[解決済み】INSERT ... ON DUPLICATE KEY (何もしない)

2022-04-07 06:17:37

質問

2つのカラムにユニークキーを持つテーブルがあります。

CREATE  TABLE `xpo`.`user_permanent_gift` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`fb_user_id` INT UNSIGNED NOT NULL ,
`gift_id` INT UNSIGNED NOT NULL ,
`purchase_timestamp` TIMESTAMP NULL DEFAULT now() ,
PRIMARY KEY (`id`) ,
UNIQUE INDEX `user_gift_UNIQUE` (`fb_user_id` ASC, `gift_id` ASC) );

そのテーブルに行を挿入したいのですが、キーが存在する場合は何もしないように! キーが存在するためにエラーが発生するのは困ります。

次のような構文があることは知っています。

INSERT ... ON DUPLICATE KEY UPDATE ...

のようなものがありますが、どうなんでしょうか。

INSERT ... ON DUPLICATE KEY DO NOTHING 

?

解決方法は?

はい、使用します。 INSERT ... ON DUPLICATE KEY UPDATE id=id (を実行しても、行の更新は行われません。 id が自分自身に割り当てられている)。

エラー (変換エラー、外部キーエラー) や自動インクリメントのフィールド枯渇 (重複キーにより行が挿入されていなくてもインクリメントされる) を気にしないのであれば INSERT IGNORE このように

INSERT IGNORE INTO <table_name> (...) VALUES (...)