Я перевожу существующую тестовую среду на Amazon RDS PostgreSQL. Тестовая структура имеет функцию перезагрузки данных в определенных таблицах в более раннее состояние. Для этого он отключает внешние ключи, удаляет существующие данные, загружает состояние сохранения и снова включает внешние ключи.
В настоящее время тестовая среда отключает внешние ключи, отключая все триггеры (конечно, для этого требуется суперпользователь):
alter table tablename disable trigger all;
На RDS это терпит неудачу с:
ОШИБКА: разрешение отклонено: «RI_ConstraintTrigger_a_20164» является системным триггером
Как временно отключить внешние ключи в Amazon RDS PostgreSQL?
Примечание: подобный вопрос уже задавался ( PostgreSQL на RDS: как выполнить массовый импорт данных с ограничениями FK? ), Но он был конкретно об автономном импорте, и решение относится также к автономному импорту.
источник
Ответы:
session_replication_role
Я нашел альтернативный способ отключения внешних ключей - https://stackoverflow.com/a/18709987
И снова включить их
Это работает на RDS, но все еще требует необычных привилегий (т.е. не предоставляется по умолчанию).
сброс и воссоздание ФК
Альтернативное решение, как предлагается в комментариях, временно отбросить FK. Это дает дополнительное преимущество в том, что данные проверяются при повторном включении FK.
сбрасывание
Воссоздание
источник