VL-*_*-80 8 postgresql trigger plpgsql functions
我运行PostgreSQL-9.2.4
是否可以从触发器调用 2 个函数?
假设以下触发器触发时,我有两个函数可以执行两个不同的表:
扳机:
CREATE TRIGGER start ON system_status FOR EACH ROW
WHEN ((new.event = start_task))
EXECUTE PROCEDURE ...()
Run Code Online (Sandbox Code Playgroud)
功能 1:( 当任务开始时 => 删除任何先前为此系统分配的下一个任务)
CREATE FUNCTION void_next_task() RETURNS trigger AS $$
BEGIN
DELETE FROM tasks_status ts
WHERE ts.system = NEW.system
AND ts.event = 'next_task';
RETURN NEW;
END;
$$
LANGUAGE plpgsql
Run Code Online (Sandbox Code Playgroud)
功能 2:(
如果插入的组合task
和system
已经出现在表中=> 将此组合标记为任何较早的记录deleted
)
CREATE FUNCTION void_dup_task() RETURNS trigger AS $$
BEGIN
UPDATE system_status ss
SET deleted = 'TRUE'
WHERE ss.system = NEW.system
AND ss.task = NEW.task
AND ss.deleted IS FALSE;
RETURN NEW;
END;
$$
LANGUAGE plpgsql
Run Code Online (Sandbox Code Playgroud)
所以我最终采用了以下方法来解决它:
在我继续实施解决方案之前,3
您能否建议我解决方案1
或2
是否可行?