Почти съм сигурен, че не можете просто да добавите on delete cascade
към съществуващо ограничение за външен ключ. Първо трябва да премахнете ограничението, след това да добавите правилната версия. В стандартния SQL смятам, че най-лесният начин да направите това е да
- започнете транзакция,
- пуснете външния ключ,
- добавете външен ключ с
on delete cascade
и накрая - извършете транзакцията
Повторете за всеки външен ключ, който искате да промените.
Но PostgreSQL има нестандартно разширение, което ви позволява да използвате множество клаузи за ограничения в един SQL израз. Например
alter table public.scores
drop constraint scores_gid_fkey,
add constraint scores_gid_fkey
foreign key (gid)
references games(gid)
on delete cascade;
Ако не знаете името на ограничението на външния ключ, което искате да премахнете, можете или да го потърсите в pgAdminIII (просто щракнете върху името на таблицата и погледнете DDL, или разширете йерархията, докато видите "Ограничения"), или можете да направите заявка за информационната схема.
select *
from information_schema.key_column_usage
where position_in_unique_constraint is not null