Jestem prawie pewien, że nie możesz po prostu dodać on delete cascade
do istniejącego ograniczenia klucza obcego. Musisz najpierw usunąć ograniczenie, a następnie dodać poprawną wersję. Uważam, że w standardowym SQL najłatwiej to zrobić,
- rozpocznij transakcję,
- upuść klucz obcy,
- dodaj klucz obcy za pomocą
on delete cascade
i wreszcie - zatwierdź transakcję
Powtórz dla każdego klucza obcego, który chcesz zmienić.
Ale PostgreSQL ma niestandardowe rozszerzenie, które pozwala na użycie wielu klauzul ograniczających w jednej instrukcji SQL. Na przykład
alter table public.scores
drop constraint scores_gid_fkey,
add constraint scores_gid_fkey
foreign key (gid)
references games(gid)
on delete cascade;
Jeśli nie znasz nazwy ograniczenia klucza obcego, które chcesz usunąć, możesz albo poszukać go w pgAdminIII (po prostu kliknij nazwę tabeli i spójrz na DDL lub rozwiń hierarchię, aż zobaczysz „Ograniczenia”), lub możesz zapytać o schemat informacji.
select *
from information_schema.key_column_usage
where position_in_unique_constraint is not null