2

我有一个我们将调用 table_A 的表,它有一个引用 table_B 的外键。Table_B 也有一个引用 table_A 的外键。要为 table_A 插入记录,我必须将外键约束配置为最初延迟。我正在尝试首先创建table_A,然后创建table_B 进入table_A 的pk,然后最后将table_B 的pk 输入table_A。

我正在使用 sqlalchemy 表达式语言(而不是 orm),并且无法将约束设置为延迟。我尝试通过引擎的连接手动设置它,但它不起作用。我确实在 table_A 上设置了声明为 DEFERRABLE INITIALLY DEFERRED 的外键。在交易开始时,我有:

connection.execute("begin")
connection.execute("set constraints deferred")

但是,引用 table_B 的 table_A 上的 fk 约束继续被违反。我尝试查看表、连接和事务类,但没有找到任何明确延迟事务约束的内容。我正在使用 Postgresql;任何帮助将非常感激。

4

1 回答 1

1

感谢@a_horse_with_no_name 的建议,但列上仍然存在 NOT NULL 约束,并且“NOT NULL”约束不可延迟。

于 2013-01-08T17:22:00.903 回答