Repaso integrado · URL histórica conservada

Repaso seguro de INSERT, UPDATE y DELETE

Elige la operación correcta y protege los cambios con una comprobación previa y una transacción cuando el motor lo permita.

25 minNivel intermedioAntes necesitas: INSERT, UPDATE, DELETE y transacciones

Al terminar, podrás

  • Elegir entre añadir, modificar o eliminar filas.
  • Convertir una condición de cambio en un SELECT de comprobación.
  • Usar COMMIT y ROLLBACK de forma consciente.

Tres operaciones, tres intenciones

OperaciónPregunta que respondeRiesgo principal
INSERT¿Qué fila nueva debe existir?Omitir columnas, duplicar claves o violar restricciones.
UPDATE¿Qué valores cambian en filas existentes?Modificar más filas de las previstas por una condición incompleta.
DELETE¿Qué filas deben dejar de existir?Eliminar información irrecuperable o relacionada con otras tablas.

Proceso seguro en cuatro pasos

  1. Escribe un SELECT con la misma condición que utilizarás en UPDATE o DELETE.
  2. Comprueba el número y la identidad de las filas.
  3. Abre una transacción explícita cuando necesites agrupar varios cambios.
  4. Revisa el resultado y termina con COMMIT o ROLLBACK.

No confíes en ROLLBACK sin conocer el motor y el tipo de tabla. Algunas operaciones de definición de datos y algunas configuraciones no se pueden deshacer de la misma forma. Practica primero con datos de prueba.

Ejemplo reversible

Este bloque añade un producto de prueba, reduce su stock y comprueba el resultado. Termina con ROLLBACK, por lo que el producto no queda guardado.

SQL
BEGIN;

INSERT INTO productos
  (id, nombre, categoria, categoria_id, precio, stock)
VALUES
  (11, 'Adaptador HDMI', 'Accesorios', 1, 19.90, 5);

SELECT id, nombre, stock
FROM productos
WHERE id = 11;

UPDATE productos
SET stock = stock - 2
WHERE id = 11
  AND stock >= 2;

SELECT id, nombre, stock
FROM productos
WHERE id = 11;

ROLLBACK;
Comprobación antes y después del UPDATE
momentoidnombrestock
tras INSERT11Adaptador HDMI5
tras UPDATE11Adaptador HDMI3

Dos errores que debes detectar

UPDATE sin una condición suficiente

UPDATE productos SET stock = 0;

La sentencia cambia todas las filas. Antes de ejecutarla, comprueba la selección con SELECT id, nombre FROM productos WHERE ....

DELETE utilizado como «vaciar un valor»

DELETE FROM clientes WHERE id = 4;

DELETE elimina la fila completa. Para cambiar únicamente un atributo, utiliza UPDATE y revisa las restricciones de la columna.

Qué debes recordar

  • Comprueba primero las filas afectadas.
  • Una transacción termina de forma explícita con COMMIT o ROLLBACK.
  • Las capacidades de reversión dependen del motor, el tipo de operación y la configuración.

Recorrido recomendado

Fuentes técnicas consultadas

Lista de comprobación antes de modificar datos

Antes de ejecutar una operación que cambie filas, separa la decisión en tres preguntas: qué filas deben verse afectadas, qué valor nuevo debe quedar y cómo volverías atrás si el resultado no fuera el esperado. Para UPDATE y DELETE, convierte primero la condición en un SELECT y revisa las filas devueltas. Para INSERT, comprueba las columnas obligatorias, las claves y los valores predeterminados.

En una base real, la sintaxis correcta es solo una parte de la seguridad. También pueden intervenir restricciones, claves foráneas, triggers, permisos y transacciones. Practica aquí el patrón mental y, antes de aplicarlo en producción, valida el comportamiento en un entorno controlado y con la documentación del motor que utilices.