gpt4 book ai didi

postgresql - 非唯一列上的 Postgres 级联删除

转载 作者:行者123 更新时间:2023-11-29 13:45:22 25 4
gpt4 key购买 nike

我有一个这样的表:

id | group_id | parent_group
---+----------+-------------
1 | 1 | null
2 | 1 | null
3 | 2 | 1
4 | 2 | 1

是否可以添加一个约束,以便在没有 group_id 等于该行的 parent_group 的行时自动删除该行?例如,如果我删除第 1 行和第 2 行,我希望自动删除第 3 行和第 4 行,因为不再有 group_id 为 1 的行。

最佳答案

clemens 发布的答案使我想到了以下解决方案。不过我对触发器不是很熟悉;这会不会有任何问题,是否有更好的方法?

CREATE OR REPLACE FUNCTION on_group_deleted() RETURNS TRIGGER AS $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM my_table WHERE group_id = OLD.group_id) THEN
DELETE FROM my_table WHERE parent_group = OLD.group_id;
END IF;
RETURN OLD;
END;
$$ LANGUAGE PLPGSQL;

CREATE TRIGGER my_table_delete_trigger AFTER DELETE ON my_table
FOR EACH ROW
EXECUTE PROCEDURE on_group_deleted();

关于postgresql - 非唯一列上的 Postgres 级联删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49292985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com