我有一个触发器,如果新价格太低,会在更新后将给定型号的价格恢复为旧价格。我想做的是:
EXECUTE PROCEDURE revertPrice(OLD.price, model)
我知道我不能在OLD
条款之外使用WHERE
,所以有什么解决方法吗?我正在运行Postgres 9.1.11。
答案 0 :(得分:1)
你想要一个BEFORE或AFTER触发器来完成这项工作。
http://www.postgresql.org/docs/current/static/plpgsql-trigger.html
调用触发器后,它会自动访问变量OLD
和NEW
。您不需要将它们作为参数传递。请参阅上面链接的文档。
如果您使用BEFORE
触发器,则可以在更改NEW
之前修改价格,或者RAISE EXCEPTION
可以中止交易。