Jag är ganska säker på att du inte bara kan lägga till on delete cascade
till en befintlig främmande nyckel-begränsning. Du måste släppa begränsningen först och sedan lägga till rätt version. I standard SQL tror jag att det enklaste sättet att göra detta är att
- starta en transaktion,
- släpp den främmande nyckeln,
- lägg till en främmande nyckel med
on delete cascade
och slutligen - besluta transaktionen
Upprepa för varje främmande nyckel som du vill ändra.
Men PostgreSQL har ett icke-standardiserat tillägg som låter dig använda flera begränsningssatser i en enda SQL-sats. Till exempel
alter table public.scores
drop constraint scores_gid_fkey,
add constraint scores_gid_fkey
foreign key (gid)
references games(gid)
on delete cascade;
Om du inte känner till namnet på den främmande nyckelbegränsningen du vill ta bort, kan du antingen slå upp den i pgAdminIII (klicka bara på tabellnamnet och titta på DDL, eller expandera hierarkin tills du ser "Begränsningar"), eller så kan du fråga informationsschemat.
select *
from information_schema.key_column_usage
where position_in_unique_constraint is not null