Eliminación en cascada de PostgreSQL

“Al trabajar con bases de datos PostgreSQL, se encontrará con casos en los que necesita eliminar registros de una tabla. Antes de ejecutar una consulta de eliminación, debe asegurarse de que la tabla no deje relaciones incompletas entre tablas. En PostgreSQL podemos usar la función CASCADE DELETE para lograr esto. Esta función permite una operación de eliminación para eliminar los registros especificados y cualquier clave externa que haga referencia a ellos. Con este artículo, veremos cómo realizar una eliminación en cascada en PostgreSQL”.

Eliminación en cascada de PostgreSQL

La función de borrado en cascada es muy sencilla. Garantiza que cuando se eliminan los registros principales, también se eliminan los registros secundarios. Para evitar la eliminación accidental de registros secundarios, puede establecer las restricciones de clave externa en NULL en la tabla principal. Veamos cómo podemos lograr esto. Comience configurando una base de datos de muestra. En su utilidad psql, ejecute el siguiente comando:

12345678 CREAR BASE DE DATOS «cascade_delete_db;» CON PROPIETARIO = CODIFICACIÓN postgres = ‘UTF8’ LC_COLLATE = ‘C’ LC_CTYPE = ‘C’ TABLESPACE = pg_default LÍMITE DE CONEXIÓN = -1;

Una vez creada, cambie a esta base de datos ejecutando el siguiente comando: A continuación, creamos la tabla principal ejecutando la consulta:

1234567 Usuarios de CREAR TABLA (ID SERIAL PRIMARY KEY, nombre completo VARCHAR (100), correo electrónico VARCHAR (255), país VARCHAR (50), departamento_extranjero_clave INT NO NULO);

A continuación, podemos crear la subtabla de la siguiente manera:

1234 CREAR TABLA departamento (user_id SERIAL PRIMARY KEY, departamento VARCHAR (50));

A continuación, debemos agregar una restricción de clave externa a la tabla principal, como se muestra en el siguiente comando:

12 ALTER TABLE Usuarios AGREGAR CLAVE EXTRANJERA (departamento_clave_extranjera) REFERENCIAS Departamento (id_usuario) EN ELIMINAR CASCADA;

Ahora podemos insertar algunos datos de muestra en las tablas como se muestra:

12345678 INSERTAR EN departamento(departamento) VALORES (‘DESARROLLO DEL JUEGO’), (‘DEV-OPS’), (‘BACKEND-DEV’); INSERTAR EN usuarios (nombre_completo, correo electrónico, país, departamento_llave_extranjera) VALORES (‘Callejón K’, ‘[email protected]’, ‘US’, 1), (‘Kaspa V’, ‘[email protected]’, ‘CA’, 2), (‘Dev.W’, ‘[email protected]’, ‘AF’, 3);

Luego podemos consultar las tablas de esta manera: Esto debería devolver la tabla:

Desde la tabla de departamentos podemos hacer lo siguiente:

1 ELEGIR * DE departamento;

La tabla resultante:

Una vez que todos los datos de muestra estén listos, podemos realizar una eliminación en cascada como se muestra en la siguiente consulta:

1 DELETE FROM departamento WHERE departamento=’DEV-OPS’;

En la declaración anterior, usamos la consulta de eliminación normal para eliminar un registro donde el departamento es igual a «DEV-OPS». Ahora que hemos configurado la eliminación en cascada, podemos verificar la tabla de usuarios para asegurarnos de que el usuario con la clave_extranjera_departamento de 2 se elimine.


Podemos ver que solo hay dos registros en la tabla Usuarios aunque eliminamos el registro de la tabla Departamentos. Felicitaciones, ha aprendido a realizar una eliminación en cascada en PostgreSQL.

terminación

En este tutorial, aprendió cómo unir dos tablas con una clave externa y configurar una función de eliminación en cascada. ¡¡Gracias por leer!!

Deja una respuesta

Tu dirección de correo electrónico no será publicada.