Saltar al contenido

PostgreSQL: CLAVE EXTRANJERA/EN ELIMINAR CASCADA

Hola usuario de nuestra página web, encontramos la respuesta a tu interrogante, continúa leyendo y la obtendrás aquí.

Solución:

Un extranjero key con una eliminación en cascada significa que si se elimina un registro en la tabla principal, los registros correspondientes en la tabla secundaria se eliminarán automáticamente. Esto se denomina eliminación en cascada.

Está diciendo de manera opuesta, esto no es que cuando elimine de la tabla secundaria, los registros se eliminarán de la tabla principal.

UPDATE 1:

EN ELIMINAR CASCADA La opción es especificar si desea que se eliminen las filas en una tabla secundaria cuando se eliminan las filas correspondientes en la tabla principal. Si no especifica eliminaciones en cascada, el comportamiento predeterminado del servidor de la base de datos le impide eliminar datos en una tabla si otras tablas hacen referencia a ella.

Si especifica esta opción, más adelante, cuando elimine una fila en la tabla principal, el servidor de la base de datos también eliminará las filas asociadas con esa fila (foránea). keys) en una tabla secundaria. La principal ventaja de la función de eliminación en cascada es que le permite reducir la cantidad de instrucciones SQL que necesita para realizar acciones de eliminación.

Entonces, se trata de lo que sucederá cuando elimine filas de la tabla principal, no de la tabla secundaria.

Entonces, en su caso, cuando el usuario elimine entradas de la tabla CAT, las filas se eliminarán de la tabla de libros. 🙂

Espero que esto te ayude 🙂

Extracto de la documentación de PostgreSQL:

La restricción y las eliminaciones en cascada son las dos opciones más comunes. […] CASCADE especifica que cuando se elimina una fila a la que se hace referencia, las filas que hacen referencia a ella también deben eliminarse automáticamente.

Esto significa que si elimina una categoría, referenciada por libros, el libro de referencia también será eliminado por ON DELETE CASCADE.

Ejemplo:

CREATE SCHEMA shire;

CREATE TABLE shire.clans (
    id serial PRIMARY KEY,
    clan varchar
);

CREATE TABLE shire.hobbits (
    id serial PRIMARY KEY,
    hobbit varchar,
    clan_id integer REFERENCES shire.clans (id) ON DELETE CASCADE
);

DELETE FROM los clanes lo harán CASCADE a los hobbits por REFERENCES.

[email protected]> psql
sauron=# SELECT * FROM shire.clans;
 id |    clan    
----+------------
  1 | Baggins
  2 | Gamgi
(2 rows)

sauron=# SELECT * FROM shire.hobbits;
 id |  hobbit  | clan_id 
----+----------+---------
  1 | Bilbo    |       1
  2 | Frodo    |       1
  3 | Samwise  |       2
(3 rows)

sauron=# DELETE FROM shire.clans WHERE id = 1 RETURNING *;
 id |  clan   
----+---------
  1 | Baggins
(1 row)

DELETE 1
sauron=# SELECT * FROM shire.hobbits;
 id |  hobbit  | clan_id 
----+----------+---------
  3 | Samwise  |       2
(1 row)

Si realmente necesita lo contrario (comprobado por la base de datos), ¡tendrá que escribir un disparador!

Te mostramos reseñas y puntuaciones

Más adelante puedes encontrar las explicaciones de otros sys admins, tú asimismo eres capaz mostrar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *