"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo realizar actualizaciones condicionales en INSERT de MySQL... EN UNA ACTUALIZACIÓN DE CLAVE DUPLICADA?

¿Cómo realizar actualizaciones condicionales en INSERT de MySQL... EN UNA ACTUALIZACIÓN DE CLAVE DUPLICADA?

Publicado el 2024-11-17
Navegar:162

How to Perform Conditional Updates in MySQL\'s INSERT ... ON DUPLICATE KEY UPDATE?

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_at 

En 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.

Último tutorial Más>

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