Jsem si docela jistý, že nemůžete jednoduše přidat on delete cascade
na existující omezení cizího klíče. Nejprve musíte zrušit omezení a poté přidat správnou verzi. Ve standardním SQL se domnívám, že nejjednodušší způsob, jak toho dosáhnout, je
- zahájit transakci,
- uvolněte cizí klíč,
- přidejte cizí klíč pomocí příkazu
on delete cascade
a nakonec - potvrdit transakci
Opakujte pro každý cizí klíč, který chcete změnit.
Ale PostgreSQL má nestandardní rozšíření, které vám umožňuje používat více omezujících klauzulí v jednom příkazu SQL. Například
alter table public.scores
drop constraint scores_gid_fkey,
add constraint scores_gid_fkey
foreign key (gid)
references games(gid)
on delete cascade;
Pokud neznáte název omezení cizího klíče, které chcete zrušit, můžete jej vyhledat v pgAdminIII (stačí kliknout na název tabulky a podívat se na DDL, nebo rozbalit hierarchii, dokud neuvidíte „Omezení“), nebo se můžete dotázat na informační schéma.
select *
from information_schema.key_column_usage
where position_in_unique_constraint is not null