我有一个表,我们称之为 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;任何帮助将非常感激。
感谢@a_horse_with_no_name 的建议,但列上仍然留有 NOT NULL 约束,并且“NOT NULL”约束不可推迟。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)