Ich migriere eine vorhandene Testumgebung zu Amazon RDS PostgreSQL. Das Testframework verfügt über eine Funktion zum erneuten Laden von Daten in bestimmten Tabellen in einen früheren Zustand. Dazu werden Fremdschlüssel deaktiviert, vorhandene Daten gelöscht, der Sicherungsstatus geladen und Fremdschlüssel wieder aktiviert.
Derzeit deaktiviert das Testframework Fremdschlüssel, indem alle Trigger deaktiviert werden (dies erfordert natürlich einen Superuser):
alter table tablename disable trigger all;
Auf RDS schlägt dies fehl mit:
FEHLER: Berechtigung verweigert: "RI_ConstraintTrigger_a_20164" ist ein Systemtrigger
Wie kann ich Fremdschlüssel in Amazon RDS PostgreSQL vorübergehend deaktivieren?
Hinweis: Eine ähnliche Frage wurde bereits gestellt ( PostgreSQL auf RDS: Wie werden Daten mit FK-Einschränkungen in großen Mengen importiert? ), Es ging jedoch speziell um den Offline-Import, und die Lösung ist auch spezifisch für den Offline-Import.
quelle
Antworten:
session_replication_role
Ich habe eine alternative Möglichkeit zum Deaktivieren von Fremdschlüsseln gefunden - /programming//a/18709987
Und sie wieder aktivieren mit
Dies funktioniert auf RDS, erfordert jedoch immer noch ungewöhnliche Berechtigungen (dh nicht standardmäßig gewährt).
FKs löschen und neu erstellen
Eine alternative Lösung besteht darin, wie in den Kommentaren vorgeschlagen, die FKs vorübergehend zu löschen. Dies bringt den zusätzlichen Vorteil, dass Daten überprüft werden, wenn FKs wieder aktiviert werden.
Fallenlassen
Erholung
quelle