我熟悉函数触发触发器的方法:
CREATE TRIGGER mytrigger
BEFORE UPDATE ON mytable
FOR EACH ROW EXECUTE PROCEDURE some_function();
我想知道现在是否有办法消除对该功能的需求。像这样的东西似乎不起作用:
CREATE TRIGGER mytrigger
BEFORE UPDATE ON mytable
FOR EACH ROW
BEGIN
SET NEW.col1 = OLD.col1 + 1
END
我一直遇到的错误是:ERROR: syntax error at or near "BEGIN"
如果我摆脱BEGIN
和END
,它会说:ERROR: syntax error at or near "SET"
其他变化也失败了。例如:
CREATE TRIGGER mytrigger
BEFORE UPDATE ON mytable
FOR EACH ROW
UPDATE mytable SET col1 = OLD.col1 + 1;
现在可以这样做吗?我目前正在使用v9.4。
答案 0 :(得分:0)
你做不到,它根本就不受支持。这就是它无法正常工作的原因。
你必须在PostgreSQL中使用触发器功能。你不能只在触发器中内嵌一些SQL。