Modificar datos · operación con riesgo

UPDATE

UPDATE cambia valores de filas existentes. La parte difícil no es escribir SET, sino controlar exactamente qué filas pueden modificarse.

Lectura: 6–8 minEjemplo comprobadoPráctica con pistas
Contenido de esta guía

Qué hace UPDATE

UPDATE modifica una o varias columnas de las filas que cumplen una condición. Las columnas que no aparecen en SET conservan su valor anterior.

Piensa en la sentencia como dos decisiones separadas: qué valor cambia y qué filas están dentro del alcance. La primera se expresa con SET; la segunda, normalmente, con WHERE.

Sintaxis mínima y orden de revisión

SQL
UPDATE tabla
SET columna = nuevo_valor
WHERE condicion;
  1. Escribe primero un SELECT con el mismo WHERE.
  2. Comprueba cuántas filas aparecen y si son las correctas.
  3. Ejecuta el UPDATE dentro de una transacción cuando el entorno lo permita.
  4. Vuelve a consultar las filas modificadas.
  5. Confirma con COMMIT o deshaz con ROLLBACK.

Regla de seguridad: si no puedes explicar cuántas filas cambiarán, todavía no ejecutes la sentencia.

Ejemplo guiado: probar un cambio reversible

El pedido 102 está pendiente. El siguiente bloque cambia su estado, permite comprobarlo y finalmente recupera el valor original:

SQL
BEGIN;

SELECT id, estado
FROM pedidos
WHERE id = 102;

UPDATE pedidos
SET estado = 'enviado'
WHERE id = 102
  AND estado = 'pendiente';

SELECT id, estado
FROM pedidos
WHERE id = 102;

ROLLBACK;
Resultado observado antes de ROLLBACK
idestado
102enviado

La condición incluye el identificador y el estado esperado. Si otra persona ya hubiera procesado el pedido, la condición dejaría de cumplirse y no se modificaría esa fila. Después de ROLLBACK, el pedido vuelve a estar pendiente.

Actualizar a partir del valor actual

El nuevo valor puede calcularse con el valor existente. Esta consulta suma cinco unidades al stock de cada producto de audio:

SQL
UPDATE productos
SET stock = stock + 5
WHERE categoria = 'Audio';

Antes de ejecutarla, el SELECT equivalente debe mostrar dos filas: Auriculares y Altavoz. Tras el cambio, sus existencias serían 16 y 5, respectivamente.

Errores frecuentes

Omitir WHERE por accidente

Sin WHERE, la sentencia actualiza todas las filas. No añadas una condición decorativa: copia exactamente el filtro que ya comprobaste con SELECT.

Confiar solo en el mensaje «consulta ejecutada»

Una sentencia válida puede afectar cero filas o muchas más de las esperadas. Comprueba el número de filas afectadas y consulta el resultado antes de confirmar.

Práctica guiada

Básica · modificación segura

Activa un cliente solo si está inactivo

Prepara una sentencia que cambie activo a 1 para Pablo Sanz, cuyo identificador es 6. Protege el cambio comprobando también que su valor actual sea 0.

Compatibilidad entre motores

La forma básica UPDATE ... SET ... WHERE ... es ampliamente portable. Las variantes para actualizar con otras tablas, limitar filas o devolver las filas cambiadas difieren entre PostgreSQL, MySQL, SQLite y SQL Server. No copies una variante específica sin comprobar la documentación de tu motor.

Qué debes recordar

  • SET define el nuevo valor y WHERE controla el alcance.
  • Prueba el filtro con SELECT antes de modificar.
  • Comprueba filas afectadas y resultado.
  • Usa transacciones para cambios que necesiten revisión.

Conceptos relacionados

Fuentes técnicas consultadas