gpt4 book ai didi

postgresql - 如何从有权访问 NEW 和 OLD 的 postgresql 规则调用函数?

转载 作者:行者123 更新时间:2023-11-29 14:23:45 24 4
gpt4 key购买 nike

我是 postgresql 的新手(因此是规则的新手),我环顾四周,但找不到真正调用“全局”函数的示例。

我正在使用规范化数据库,其中的行将被标记为已删除而不是已删除。但是,我想为最终用户保留 DELETE FROM... 功能,方法是使用而不是删除规则来更新表的 deleted_time 列。因此,每个表都应该能够使用一个通用函数,但我不确定在这种情况下如何调用它,或者它如何访问 NEWOLD?

CREATE OR REPLACE RULE rule_tablename_delete AS ON DELETE
TO tablename DO INSTEAD (
/// call function here to update the table's delete_time column
);

这甚至是正确的方法吗? (我注意到 INSTEAD OF 触发器仅限于 View )

最佳答案

只需使用更新语句:

create rule rule_tablename_delete as
on delete to tablename
do instead
update tablename
set delete_time = current_timestamp
where id = old.id
and delete_time is null;

假设 id 列是该表的主键。

手册中有更多示例:http://www.postgresql.org/docs/9.1/static/rules-update.html

关于postgresql - 如何从有权访问 NEW 和 OLD 的 postgresql 规则调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11107334/

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