Revisamos de forma cada enunciado de nuestra web con el objetivo de enseñarte en todo momento la información certera y actualizada.
Solución:
¡Sí!
Aquí tienes otro ejemplo:
UPDATE prices
SET final_price= CASE
WHEN currency=1 THEN 0.81*final_price
ELSE final_price
END
Esto funciona porque MySQL no actualiza la fila, si no hay cambios, como se menciona en los documentos:
Si establece una columna en el valor que tiene actualmente, MySQL lo nota y no lo actualiza.
Otra solución que, en mi opinión, es más fácil de leer sería:
UPDATE test
SET something = 1, field = IF(condition is true, 1, field)
WHERE id = 123
Lo que esto hace es establecer ‘campo’ en 1 (como OP usado como ejemplo) si se cumple la condición y usar el valor actual de ‘campo’ si no se cumple. Usar el valor anterior es lo mismo que no cambiar, así que ahí lo tienes.
Prueba esto:
UPDATE test
SET
field = 1
WHERE id = 123 and condition
Si te ha sido de ayuda nuestro post, sería de mucha ayuda si lo compartieras con más seniors de esta forma contrubuyes a difundir nuestra información.