是否可以设置仅在特定列值更改时才触发并取决于该值调用不同函数的触发器?

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

例如:

第X列

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

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

lip170 回答:是否可以设置仅在特定列值更改时才触发并取决于该值调用不同函数的触发器?

使用WHEN (condition)中的CREATE TRIGGER甚至可以让您直接触发不同的触发器。但是,您也可以使用它来触发一个触发器,并使用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

编辑:您无法在一个INSERT中组合使用UPDATECREATE TRIGGER触发器,因为如果发生以下情况,我们要检查OLD记录更新,但不能与插入一起使用。

本文链接:https://www.f2er.com/3121491.html

大家都在问