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 ele desativa as chaves estrangeiras, exclui os dados existentes, carrega o save state e habilita as chaves estrangeiras novamente.
Atualmente, a estrutura de teste desativa 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 desabilitar temporariamente as chaves estrangeiras no Amazon RDS PostgreSQL?
Observação: uma pergunta semelhante já foi feita ( PostgreSQL no RDS: como importar dados em massa com restrições de FK? ), mas era especificamente sobre importação offline e a solução também é específica para importação offline.
session_replication_role
Encontrei uma maneira alternativa de desabilitar chaves estrangeiras - https://stackoverflow.com/a/18709987
E reativá-los com
Isso funciona no RDS, mas ainda requer privilégios incomuns (ou seja, não concedidos por padrão).
soltando e recriando FKs
A solução alternativa é, conforme sugerido nos comentários, descartar temporariamente os FKs. Isso traz a vantagem adicional de que os dados são verificados quando os FKs são reativados.
caindo
recriando