Jeg er ret sikker på, at du ikke bare kan tilføje on delete cascade
til en eksisterende fremmednøglebegrænsning. Du skal først slippe begrænsningen og derefter tilføje den korrekte version. I standard SQL tror jeg, at den nemmeste måde at gøre dette på er at
- start en transaktion,
- slip fremmednøglen,
- tilføj en fremmednøgle med
on delete cascade
, og til sidst - forpligte transaktionen
Gentag for hver fremmednøgle, du vil ændre.
Men PostgreSQL har en ikke-standard udvidelse, der lader dig bruge flere begrænsningsklausuler i en enkelt SQL-sætning. For eksempel
alter table public.scores
drop constraint scores_gid_fkey,
add constraint scores_gid_fkey
foreign key (gid)
references games(gid)
on delete cascade;
Hvis du ikke kender navnet på den fremmednøgle-begrænsning, du vil slette, kan du enten slå den op i pgAdminIII (bare klik på tabelnavnet og se på DDL, eller udvide hierarkiet, indtil du ser "Begrænsninger"), eller du kan forespørge på informationsskemaet.
select *
from information_schema.key_column_usage
where position_in_unique_constraint is not null