既存のテスト環境をAmazon RDS PostgreSQLに移行しています。テストフレームワークには、特定のテーブルのデータを以前の状態にリロードする機能があります。このため、外部キーを無効にし、既存のデータを削除し、保存状態をロードして、外部キーを再度有効にします。
現在、テストフレームワークはすべてのトリガーを無効にすることで外部キーを無効にします(もちろん、これにはスーパーユーザーが必要です)。
alter table tablename disable trigger all;
RDSでは、これは失敗します。
エラー:拒否された権限:「RI_ConstraintTrigger_a_20164」はシステムトリガーです
Amazon RDS PostgreSQLで外部キーを一時的に無効にするにはどうすればよいですか?
注:同様の質問がすでに尋ねられています(RDS上のPostgreSQL:FK制約を使用してデータを一括インポートする方法は?)
おそらくこれはスタックオーバーフローの質問でしょうか?
—
Piotr Findeisen 2015
そう思わない-それはデータベース管理に非常に明確に関連しています。
—
Vérace
FKを無効にするにはどうすればよいですか?なぜRDSでは異なるものになると思いますか?また、自分で試してみませんか?
—
dezso 2015
@dezso、コメントありがとうございます。もちろん、RDS以外のPostgreSQLで使用されるコードを追加しました。
—
Piotr Findeisen 2015
そうそう、この方法ではうまくいきません。しかし、FK制約を削除して再作成するのはどうですか?
—
dezso 2015