table_Bを参照する外部キーを持つtable_Aと呼ぶテーブルがあります。Table_Bには、table_Aを参照する外部キーもあります。table_Aのレコードを挿入するには、外部キー制約を最初に延期するように構成する必要があります。最初にtable_Aを作成し、次にtable_Aのpkを入力してtable_Bを作成し、最後にtable_Bのpkをtable_Aに入力しようとしています。
sqlalchemy式言語(ormではない)を使用していますが、制約を遅延に設定するのに問題があります。エンジンの接続を介して手動で設定しようとしましたが、機能しません。table_AでDEFERRABLEINITIALLYDEFERREDとして宣言された外部キーを設定しました。トランザクションの開始時に、私は次のことを行っています。
connection.execute("begin")
connection.execute("set constraints deferred")
ただし、table_Bを参照するtable_Aのfk制約は引き続き違反されます。Table、Connection、およびtransactionクラスを調べてみましたが、トランザクションの制約を明示的に延期するものは見つかりませんでした。私はPostgresqlを使用しています。どんな助けでも大歓迎です。