Pet*_*uss 2 postgresql triggers plpgsql
我正在使用一个功能
CREATE FUNCTION myfunc() RETURNS trigger AS $$ ... $$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)
带触发器,
CREATE TRIGGER mycheck BEFORE INSERT OR UPDATE ON t
FOR EACH ROW EXECUTE PROCEDURE myfunc();
Run Code Online (Sandbox Code Playgroud)
我现在的问题是在体内表达myfunc()关于事件的条件,像plpgsql一样
IF TRIGGER_EVENT_WAS_INSERT THEN ...doThis... END IF;
Run Code Online (Sandbox Code Playgroud)
如何表达这种情况? (看到我有"INSERT OR UPDATE"触发事件)
我正在使用PostgreSQL v9.1.
是的,TG_OP.每个文件:
TG_OP
数据类型文本; 的字符串INSERT,UPDATE,DELETE,或TRUNCATE告诉为此操作触发器被解雇了.
小心你在每种情况下返回的内容.有时你想要的RETURN NEW,在a的情况下没有定义,DELETE反之亦然.如果它太复杂,而是分成多个触发器,在单独的事件上调用.
例:
IF TG_OP = 'DELETE' THEN
-- do something
RETURN OLD; -- depends!
ELSIF TG_OP = 'UPDATE' THEN
-- do something
RETURN NEW; -- depends!
END IF;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1082 次 |
| 最近记录: |