有没有避免FK完整性错误而不提交的方法?

时间:2019-04-11 19:22:41

标签: python sqlalchemy

我正在使用API​​有效负载来更新数据库。 我有一些由外键约束强制执行的业务规则,例如:地址必须具有与其关联的客户ID(一个客户<->“多个地址”)。

在更新数据库时,为了确保不更新一个表并更新另一个表,我必须确保全部或不提交任何内容,因此我要逐步编写更新:

  1. 更新客户
  2. 更新地址
  3. 提交所有更改

基本上,我使用类实例的列表来调用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约束)的同时保持一致性?

0 个答案:

没有答案