INSERTAR KEY EN LA CLAVE DUPLICADA (no hacer nada)


Tengo una tabla con una clave única para dos columnas:

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

Quiero insertar una fila en esa tabla, pero si la clave existe, ¡no hacer nada! No quiero que se genere un error porque las claves existen.

Sé que existe la siguiente sintaxis:

INSERT ... ON DUPLICATE KEY UPDATE ...

Pero hay algo como:

INSERT ... ON DUPLICATE KEY DO NOTHING 

?

Author: Mark Amery, 2011-01-04

2 answers

Sí, hay INSERT IGNORE, o puedes hacer ON DUPLICATE KEY UPDATE id=id.

 273
Author: ceejayoz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-04 17:15:05

Utilice INSERT ... ON DUPLICATE KEY IGNORE

No recomiendo usar ON DUPLICATE KEY UPDATE ... o INSERT IGNORE porque la ACTUALIZACIÓN usa el recurso para otra acción, y INSERT IGNORE solo úselo si no le importa esa consulta, porque mysql no devuelve error si u insertar algo y u no puede hendling nada!

 2
Author: Abdul Aziz Al Basyir,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-28 07:49:01