it-swarm.com.de

INSERT ... ON DUPLICATE KEY (nichts tun)

Ich habe eine Tabelle mit einem eindeutigen Schlüssel für zwei Spalten:

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) );

Ich möchte eine Zeile in diese Tabelle einfügen, aber wenn der Schlüssel vorhanden ist, nichts tun! Ich möchte nicht, dass ein Fehler generiert wird, da die Schlüssel vorhanden sind.

Ich weiß, dass es folgende Syntax gibt:

INSERT ... ON DUPLICATE KEY UPDATE ...

aber gibt es so etwas wie:

INSERT ... ON DUPLICATE KEY DO NOTHING 

?

167
ufk

Ja, es gibt INSERT IGNORE, oder Sie können ON DUPLICATE KEY UPDATE id=id tun.

285
ceejayoz

Verwenden Sie ON DUPLICATE KEY UPDATE ...
Negativ: weil die UPDATE Ressourcen für die zweite Aktion verwendet.

Verwenden Sie INSERT IGNORE ...
Negativ: MySQL zeigt keine Fehler an, wenn etwas schief geht, sodass Sie die Fehler nicht behandeln können. Verwenden Sie es nur, wenn Sie sich nicht für die Abfrage interessieren.