我有一个表,该表的一列将接收三个预设值之一,可以设置一个触发器来检查表上的每个插入/更新,并根据该值调用不同的函数?
例如:
第X列
value =>'foo'调用函数fooFunction()
value =>'bar'调用函数barFunction()
我有一个表,该表的一列将接收三个预设值之一,可以设置一个触发器来检查表上的每个插入/更新,并根据该值调用不同的函数?
例如:
第X列
value =>'foo'调用函数fooFunction()
value =>'bar'调用函数barFunction()
使用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
中组合使用UPDATE
和CREATE TRIGGER
触发器,因为如果发生以下情况,我们要检查OLD
记录更新,但不能与插入一起使用。