【发布时间】:2021-02-18 13:36:55
【问题描述】:
我的数据库中的多个表中有一个列person_id。我正在删除 individuals table 中的重复项,并且需要更新其余表中的 person_id。
我的架构是clud,我的表是:
address
cases
child_cases
matter_person
phone
individuals
如何一次更新所有表格而不是单独更新?
个人表
person_id | first_name | last_name
----------------------------------
100 John Doe
101 John Doe (duplicate value)
我想删除 person_id 为 101 的记录,我需要将所有其他表中的 person_id 更改为 100,其中 person_id 为 101。
病例表
person_id | case_number
-----------------------
100 12345
101 6789
结果
person_id | case_number
-----------------------
100 12345
100 6789
matter_person 表
person_id | matter_number
-------------------------
100 123abc
101 456def
结果
person_id | matter_number
-------------------------
100 123abc
100 456def
【问题讨论】:
-
请提供样本数据和期望的结果。
-
在 SQL 的基于集合的范例和 RDBMS 的基于事务的ACID 框架中,您将无法一次更新所有表。
-
@GordonLinoff 示例数据在上面
-
您需要一个 SQL 事务来更新所有引用 Individuals 表的表中的
person_id,然后删除重复的人员记录,最后提交事务。