PostgreSQLのドキュメントには、そのALL
部分について次のように記載されています。
テーブルに属するすべてのトリガーを無効または有効にします。(トリガーのいずれかが、外部キー制約または延期可能な一意性および除外制約を実装するために使用されるものなど、内部的に生成された制約トリガーである場合、これにはスーパーユーザー特権が必要です。)
したがって、質問に外部キーチェックを記載しているため、データの挿入に使用しているユーザーはスーパーユーザーではないと思います。
ただし、要件が非常に特別でない限り、間違ったルートを進んでいると思います:
チェック/トリガーを一緒に無効にすることは、データの一貫性を非常に簡単に破壊する非常に大きな銃です. そして、トランザクションの最後にチェックを再度有効にしたいので、これをしたくないようです。
最初に延期可能な制約を回避できればよいでしょう。次に、トランザクション スコープに自動的にバインドされるSET CONSTRAINTSコマンドを使用できます。一貫性が危険にさらされていないことを確認できます。遅延可能なトリガーに関するCREATE TABLEのドキュメントも参照してください。