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