PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment ajouter des contraintes de cascade de suppression ?

Je suis presque sûr que vous ne pouvez pas simplement ajouter on delete cascade à une contrainte de clé étrangère existante. Vous devez d'abord supprimer la contrainte, puis ajouter la version correcte. En SQL standard, je pense que le moyen le plus simple de le faire est de

  • lancer une transaction,
  • déposez la clé étrangère,
  • ajouter une clé étrangère avec on delete cascade , et enfin
  • valider la transaction

Répétez l'opération pour chaque clé étrangère que vous souhaitez modifier.

Mais PostgreSQL a une extension non standard qui vous permet d'utiliser plusieurs clauses de contrainte dans une seule instruction SQL. Par exemple

alter table public.scores
drop constraint scores_gid_fkey,
add constraint scores_gid_fkey
   foreign key (gid)
   references games(gid)
   on delete cascade;

Si vous ne connaissez pas le nom de la contrainte de clé étrangère que vous souhaitez supprimer, vous pouvez soit la rechercher dans pgAdminIII (cliquez simplement sur le nom de la table et regardez le DDL, ou développez la hiérarchie jusqu'à ce que vous voyiez "Constraints"), ou vous pouvez interroger le schéma d'informations.

select *
from information_schema.key_column_usage
where position_in_unique_constraint is not null