2011-08-26 20 views
5

Estoy insertando algunos datos en una tabla, pero ocasionalmente choca con otros datos en la tabla (es decir, tiene la misma clave primaria).
Me gustaría poder sobreescribir estos datos si están allí, en lugar de tener mysql enviándome un mensaje de error diciendo que se trata de una clave principal duplicada. Sé que puedo simplemente eliminar estos valores de antemano, pero tomaría una consulta algo grande.
¿Es posible sobrescribir estos de alguna manera y suprimir las advertencias, o me veo obligado a eliminar estos valores.Insertar en una tabla mysql y sobrescribir cualquier dato actual

Respuesta

13

sólo un poco cheatsheet
MySQL tiene 3 escenarios diferentes en el manejo de duplicados de clave principal:
si quieres ...

2

Puede usar REPLACE INTO en MySQL para hacerlo.

REPLACE INTO table 
SET name = 'Treffynnon' 
+3

Me gusta la desvergonzada auto promoción. –

3

MySQL tiene un "INSERT ... EN DUPLICADO actualización de la clave" de comandos. Se puede encontrar aquí: http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

INSERT INTO `table` VALUES ('a', 'b') ON DUPLICATE KEY UPDATE `field1`='a', `field2`='b' 
+2

'set field = VALUES (campo)' es una mejor opción, le ahorra tener que usar sus datos dos veces en la consulta. la función values ​​() lo extraerá de la parte insertada de la declaración, por lo que los datos solo entrarán en la cadena de consulta una vez. –

Cuestiones relacionadas