我正在使用API有效负载来更新数据库。 我有一些由外键约束强制执行的业务规则,例如:地址必须具有与其关联的客户ID(一个客户<->“多个地址”)。
在更新数据库时,为了确保不更新一个表并更新另一个表,我必须确保全部或不提交任何内容,因此我要逐步编写更新:
基本上,我使用类实例的列表来调用add_all(),并且在两个add_all之后都提交。 id是客户的PK,地址是FK。
customers_list = []
customer_entry = Customers(name=name, id=id)
customer_list.append(entries)
db.session.add_all(customer_list)
address_list = []
address_entry = Address(id=customer_id, zip=zip)
address_list.append(entries)
db.session.add_all(address_list)
db.session.commit()
问题是,当它得到解决时,它会给我一个完整性错误,因为它在客户表中找不到customer_id
(因为尚未提交)。
我虽然要暂时禁用外键约束,但是这并不是确保可靠数据库的好方法。
如何在避免完整性错误(FK约束)的同时保持一致性?