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.
Al terminar, podrás
- Elegir entre añadir, modificar o eliminar filas.
- Convertir una condición de cambio en un
SELECTde comprobación. - Usar
COMMITyROLLBACKde forma consciente.
Tres operaciones, tres intenciones
| Operación | Pregunta que responde | Riesgo 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
- Escribe un
SELECTcon la misma condición que utilizarás enUPDATEoDELETE. - Comprueba el número y la identidad de las filas.
- Abre una transacción explícita cuando necesites agrupar varios cambios.
- Revisa el resultado y termina con
COMMIToROLLBACK.
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.
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;| momento | id | nombre | stock |
|---|---|---|---|
| tras INSERT | 11 | Adaptador HDMI | 5 |
| tras UPDATE | 11 | Adaptador HDMI | 3 |
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
COMMIToROLLBACK. - 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.