PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como adicionar restrições de exclusão em cascata?


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