作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个这样的表:
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/
我是一名优秀的程序员,十分优秀!