web-dev-qa-db-ja.com

INSERT ... ON DUPLICATE KEY(何もしない)

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 

171
ufk

はい、INSERT IGNOREがあります。または、ON DUPLICATE KEY UPDATE id=idを実行できます。

289
ceejayoz

ON DUPLICATE KEY UPDATE ...を使用し、
Negative:UPDATEは2番目のアクションにリソースを使用するためです。

INSERT IGNORE ...を使用し、
ネガティブ:MySQLは、何か問題が発生してもエラーを表示しないため、エラーを処理できません。クエリを気にしない場合にのみ使用してください。