Estou migrando o ambiente de teste existente para o Amazon RDS PostgreSQL. A estrutura de teste possui um recurso de recarregar dados em determinadas tabelas para um estado anterior. Para isso, desativa as chaves estrangeiras, exclui os dados existentes, carrega o estado de salvamento e ativa novamente as chaves estrangeiras.
Atualmente, a estrutura de teste desabilita as chaves estrangeiras desativando todos os gatilhos (é claro, isso requer superusuário):
alter table tablename disable trigger all;
No RDS, isso falha com:
ERRO: permissão negada: "RI_ConstraintTrigger_a_20164" é um gatilho do sistema
Como posso desativar temporariamente chaves estrangeiras no Amazon RDS PostgreSQL?
Nota: pergunta semelhante já foi feita ( PostgreSQL no RDS: como importar dados em massa com restrições FK? ), Mas era especificamente sobre importação offline e a solução também é específica para importação offline.
fonte
Respostas:
session_replication_role
Encontrei uma maneira alternativa de desativar chaves estrangeiras - https://stackoverflow.com/a/18709987
E reativá-los com
Isso funciona no RDS, mas ainda requer privilégios incomuns (por exemplo, não concedidos por padrão).
descartando e recriando FKs
Solução alternativa é, conforme sugerido nos comentários, eliminar temporariamente os FKs. Isso traz uma vantagem adicional de que os dados são verificados quando os FKs são reativados.
Deixando cair
Recriando
fonte