Ik ben er vrij zeker van dat je niet zomaar on delete cascade
kunt toevoegen aan een bestaande externe sleutelbeperking. U moet eerst de beperking laten vallen en vervolgens de juiste versie toevoegen. In standaard SQL denk ik dat de gemakkelijkste manier om dit te doen is om
- start een transactie,
- laat de externe sleutel vallen,
- voeg een externe sleutel toe met
on delete cascade
, en tot slot - voer de transactie uit
Herhaal dit voor elke externe sleutel die u wilt wijzigen.
Maar PostgreSQL heeft een niet-standaard extensie waarmee u meerdere beperkingsclausules in één SQL-instructie kunt gebruiken. Bijvoorbeeld
alter table public.scores
drop constraint scores_gid_fkey,
add constraint scores_gid_fkey
foreign key (gid)
references games(gid)
on delete cascade;
Als u de naam van de externe sleutelbeperking die u wilt verwijderen niet weet, kunt u deze opzoeken in pgAdminIII (klik gewoon op de tabelnaam en kijk naar de DDL, of vouw de hiërarchie uit totdat u "Constraints" ziet), of u kunt het informatieschema opvragen.
select *
from information_schema.key_column_usage
where position_in_unique_constraint is not null