gpt4 book ai didi

sql - 是否可以设置一个触发器,该触发器仅在特定列值更改时触发,并且取决于它调用不同函数的值是什么?

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

我有一个表,其中有一列将接收三个预设值之一,可以设置触发器来检查表上的每个插入/更新、值并根据值调用不同的函数?

例如:

X 列

value => 'foo' 调用函数 fooFunction()

value => 'bar' 调用函数 barFunction()

最佳答案

使用 CREATE TRIGGERWHEN (condition) 甚至可以让您直接触发不同的触发器。但您也可以使用它来触发一个触发器,并在触发器内部使用 IF/ELSE 结构决定应该执行哪个函数。可能的 SQL 代码:

CREATE TRIGGER my_trigger_upd BEFORE UPDATE ON mytable
FOR EACH ROW
WHEN (NEW.value = 'foo' AND OLD.value IS DISTINCT FROM NEW.value)
EXECUTE FUNCTION foo_function();

CREATE TRIGGER my_trigger_ins BEFORE INSERT ON mytable
FOR EACH ROW
WHEN (NEW.value = 'foo')
EXECUTE FUNCTION foo_function();

文档:https://www.postgresql.org/docs/current/sql-createtrigger.html

编辑:您不能将 INSERTUPDATE 触发器组合在一个 CREATE TRIGGER 中,因为我们要检查OLD 记录以备更新,但不能用于插入。

关于sql - 是否可以设置一个触发器,该触发器仅在特定列值更改时触发,并且取决于它调用不同函数的值是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58808239/

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