REPLACE
INTO tblNames (FirstName, LastName)
VALUES ('John', 'Jones')
Si hay una restricción única de ningún tipo sobre FirstName
, LastName
o su combinación, y es violado, los registros se elimina y se inserta con los nuevos valores.
El registro será reemplazado si alguna de las condiciones se cumple:
FirstName
es UNIQUE
y hay una John
en la tabla,
LastName
es UNIQUE
y hay una Jones
en la tabla,
FirstName, Lastname
es UNIQUE
y hay John Jones
en la tabla.
Tenga en cuenta que REPLACE
operación es una INSERT
posiblemente después de una DELETE
que afectará siempre la mesa.
En las versiones más recientes de MySQL
, debe usar INSERT … ON DUPLICATE KEY UPDATE
.
Cuando estaba respondiendo no había ninguna etiqueta "mysql", por lo que mis ejemplos de código son estándar – UserControl
¿Hay alguna forma de evitar el error en la inserción si el registro ya existe? – Matt
Puede realizar 'seleccionar' para verificar si la entrada ya existe antes de actualizar o insertar. No estoy seguro acerca de MySQL, pero en SQL Server incluso puede evitar la selección. El escenario típico: Conjunto tblNames actualización ... donde key-condición si @@ recuento de filas = 0 - el número de filas afectadas por la última declaración (es decir, la actualización) inserción en tblNames .... lo siento, para la respuesta tardía, espero que esto ayude – UserControl