Actualización condicional en INSERT... ON DUPLICATE KEY UPDATE
En MySQL, la sintaxis INSERT... ON DUPLICATE KEY UPDATE permite Actualización automática de los datos de la tabla cuando se encuentra una clave duplicada durante una operación de inserción. Sin embargo, la parte ACTUALIZAR de la consulta no admite el uso de una cláusula WHERE para especificar actualizaciones condicionales.
Solución alternativa mediante IF()
Para superar esta limitación, se puede utilizar la función IF() para implementar actualizaciones condicionales dentro de la cláusula ON DUPLICATE KEY UPDATE. La función IF() evalúa una condición y devuelve un valor diferente según el resultado.
Por ejemplo, considere la siguiente instrucción INSERT... ON DUPLICATE KEY UPDATE:
INSERT INTO daily_events (created_on, last_event_id, last_event_created_at) VALUES ('2010-01-19', 23, '2010-01-19 10:23:11') ON DUPLICATE KEY UPDATE last_event_id = IF(last_event_created_atEn esta declaración, la función IF() verifica si el valor de la columna last_event_created_at en la tabla de la base de datos es menor que el valor que se inserta (VALUES(last_event_created_at)). Si es verdadero, actualiza la columna last_event_id con el nuevo valor de la declaración de inserción. De lo contrario, deja el valor existente sin cambios.
Esta solución permite actualizaciones condicionales en instrucciones INSERT... ON DUPLICATE KEY UPDATE sin recurrir a combinaciones de consultas INSERT/UPDATE/SELECT, que pueden no ser adecuadas para la replicación. escenarios.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3