Saya memigrasikan lingkungan pengujian yang ada ke Amazon RDS PostgreSQL. Kerangka uji memiliki fitur memuat ulang data dalam tabel tertentu ke keadaan sebelumnya. Untuk ini ia menonaktifkan kunci asing, menghapus data yang ada, memuat negara menyimpan dan mengaktifkan kunci asing lagi.
Saat ini, kerangka uji menonaktifkan kunci asing dengan menonaktifkan semua pemicu (tentu saja, ini membutuhkan superuser):
alter table tablename disable trigger all;
Pada RDS, ini gagal dengan:
GALAT: izin ditolak: "RI_ConstraintTrigger_a_20164" adalah pemicu sistem
Bagaimana saya dapat menonaktifkan sementara kunci asing di Amazon RDS PostgreSQL?
Catatan: pertanyaan serupa telah ditanyakan ( PostgreSQL di RDS: Bagaimana cara mengimpor data massal dengan batasan FK? ) Tapi itu khusus tentang impor offline dan solusinya juga khusus untuk impor offline.
sumber
Jawaban:
session_replication_role
Saya menemukan cara alternatif untuk menonaktifkan kunci asing - https://stackoverflow.com/a/18709987
Dan mengaktifkan kembali mereka dengan
Ini berfungsi pada RDS tetapi masih membutuhkan hak istimewa yang tidak biasa (yaitu tidak diberikan secara default).
menjatuhkan dan menciptakan kembali FK
Solusi alternatif adalah, seperti yang disarankan dalam komentar, untuk sementara waktu menjatuhkan FK. Ini membawa keuntungan tambahan bahwa data diverifikasi ketika FK diaktifkan kembali.
Jatuhan
Rekreasi
sumber