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