Tengo una consulta SQL donde quiero insertar varias filas en una sola consulta. así que usé algo como:
$sql = "INSERT INTO beautiful (name, age)
VALUES
('Helen', 24),
('Katrina', 21),
('Samia', 22),
('Hui Ling', 25),
('Yumie', 29)";
mysql_query( $sql, $conn );
El problema es que cuando ejecuto esta consulta, quiero verificar si una UNIQUE
clave (que no es la PRIMARY KEY
), por ejemplo 'name'
, anterior, debe verificarse y, si 'name'
ya existe, la fila completa correspondiente debe actualizarse de lo contrario.
Por ejemplo, en el ejemplo a continuación, si 'Katrina'
ya está presente en la base de datos, se debe actualizar toda la fila, independientemente del número de campos. Nuevamente, si 'Samia'
no está presente, se debe insertar la fila.
Pensé en usar:
INSERT INTO beautiful (name, age)
VALUES
('Helen', 24),
('Katrina', 21),
('Samia', 22),
('Hui Ling', 25),
('Yumie', 29) ON DUPLICATE KEY UPDATE
Aquí está la trampa. Me quedé atrapado y confundido acerca de cómo proceder. Tengo varias filas para insertar / actualizar a la vez. Por favor dame una dirección. Gracias.
fuente
INSERTAR EN ... EN LA ACTUALIZACIÓN DE LLAVE DUPLICADA solo funcionará para MYSQL, no para SQL Server.
para el servidor SQL, la forma de evitar esto es declarar primero una tabla temporal, insertar valor en esa tabla temporal y luego usar MERGE
Me gusta esto:
fuente
Puede usar Reemplazar en lugar de INSERTAR ... EN LA ACTUALIZACIÓN CLAVE DUPLICADA
fuente