使用PostgreSQL 9.1在函数调用中使用旧值

时间:2014-03-05 19:48:57

标签: postgresql triggers sql-update postgresql-9.1

我有一个触发器,如果​​新价格太低,会在更新后将给定型号的价格恢复为旧价格。我想做的是:

EXECUTE PROCEDURE revertPrice(OLD.price, model)

我知道我不能在OLD条款之外使用WHERE,所以有什么解决方法吗?我正在运行Postgres 9.1.11。

1 个答案:

答案 0 :(得分:1)

你想要一个BEFORE或AFTER触发器来完成这项工作。

http://www.postgresql.org/docs/current/static/plpgsql-trigger.html

调用触发器后,它会自动访问变量OLDNEW。您不需要将它们作为参数传递。请参阅上面链接的文档。

如果您使用BEFORE触发器,则可以在更改NEW之前修改价格,或者RAISE EXCEPTION可以中止交易。