Tenho certeza de que você não pode simplesmente adicionar
on delete cascade
a uma restrição de chave estrangeira existente. Você tem que descartar a restrição primeiro e depois adicionar a versão correta. No SQL padrão, acredito que a maneira mais fácil de fazer isso é - iniciar uma transação,
- descarte a chave estrangeira,
- adicione uma chave estrangeira com
on delete cascade
, e finalmente - confirmar a transação
Repita para cada chave estrangeira que você deseja alterar.
Mas o PostgreSQL tem uma extensão não padrão que permite usar várias cláusulas de restrição em uma única instrução SQL. Por exemplo
alter table public.scores
drop constraint scores_gid_fkey,
add constraint scores_gid_fkey
foreign key (gid)
references games(gid)
on delete cascade;
Se você não souber o nome da restrição de chave estrangeira que deseja eliminar, você pode procurá-la no pgAdminIII (basta clicar no nome da tabela e examinar o DDL ou expandir a hierarquia até ver "Restrições"), ou você pode consultar o esquema de informações.
select *
from information_schema.key_column_usage
where position_in_unique_constraint is not null