如何在不将控制委托给函数的情况下在PostgreSQL中创建触发器?

时间:2015-05-22 17:01:27

标签: postgresql

我熟悉函数触发触发器的方法:

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"

如果我摆脱BEGINEND,它会说: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。

1 个答案:

答案 0 :(得分:0)

你做不到,它根本就不受支持。这就是它无法正常工作的原因。

必须在PostgreSQL中使用触发器功能。你不能只在触发器中内嵌一些SQL。