小编rom*_*aia的帖子

更新引用时删除行

假设我有一个person带有 id 和其他一些列的表。其他表person使用ON UPDATE CASCADE. 例如:

CREATE TABLE person (id int PRIMARY KEY);
CREATE TABLE sale (id int PRIMARY KEY,
    person_id int REFERENCES person(id) ON UPDATE CASCADE);
Run Code Online (Sandbox Code Playgroud)

现在,我想要做的是:从 person 表中删除重复的条目,修复referencessale引用。例如,使用此数据:

INSERT INTO person values (1), (2), (3);
INSERT INTO sale VALUES (11, 1), (12, 2), (13, 3);
Run Code Online (Sandbox Code Playgroud)

Person12实际上是一样的,所以他们应该被“合并”。通过合并我的意思是不包括人2在更新的人引用1sale表。

由于ON UPDATE CASCADE表上有一个引用person,我想知道是否有某种方法可以在不必手动更新sale表的情况下,在删除人的同时导致级联更新2

我在这里试图实现的是避免使用专用程序来更新引用,因为引用表的数量很可能会增加,需要在此过程中进行维护(并且已经相当大了)。

postgresql delete dynamic-sql referential-integrity update

6
推荐指数
1
解决办法
3807
查看次数