我有 2 张桌子:
“客户”和“地址”。一个客户可以有多个地址,因此它们具有“n:m”关系。出于这个原因,我也有表“customer-addr”。
这就是我的表格的样子:
+---------------+
+-----------+ | customer_addr |
| customers | +---------------+ +-----------+
+-----------+ | id | | addresses |
| id | <---> | cid | +-----------+
| name | | aid | <---> | id |
+-----------+ +---------------+ | address |
+-----------+
我需要更新所有客户数据,包括。所有地址。出于这个原因,我考虑先删除所有现有地址,然后更新客户表,然后再创建每个新地址。
我的问题:如何有效地删除一位客户的所有现有地址?(我必须从 2 个表中删除行)。
有没有我可以使用的单一语句?(没有级联方法,这太冒险了)
或者我可以用 2 个语句而不使用子选择吗?
最好的方法是什么?
请注意,我正在使用 postgresql
编辑:
我的整个数据库设计更复杂,地址表不仅来自“客户”,还来自“供应商”、“bulkbuyers”、..
每个地址仅属于一位客户或一位供应商或一位大宗采购商。(没有地址被多个家长使用/没有地址共享)
曾经的客户/供应商/.. 可以有多个地址。
出于这个原因,来自 zebediah49 的编辑解决方案将不起作用,因为它还会删除每个供应商/bulkbuyer/...的所有地址