下面的触发器定义有什么问题?我打算在更新或插入“date”列时执行“calculate_dow”函数,但它会生成以下错误...
CREATE TRIGGER tr_calculate_dow
AFTER UPDATE OR INSERT OF date ON focusblu.events
FOR EACH ROW
EXECUTE PROCEDURE calculate_dow(date);
执行SQL失败:SQL CREATE TRIGGER tr_calculate_dow更新或插入日期后on focusblu.events FOR EACH ROW EXECUTE PROCEDURE calculate_dow(date);失败:错误:语法错误在“OF”第1行或附近第1行:... IGGER tr_calculate_dow更新或插入日期后... ^
答案 0 :(得分:0)
我假设您将更新每次更新的日期,因此您无需指定date
字段。
CREATE TRIGGER tr_calculate_dow
AFTER UPDATE OR INSERT ON focusblu.events
FOR EACH ROW
EXECUTE PROCEDURE calculate_dow(date);
答案 1 :(得分:0)
错误显示您遇到语法错误:您无法在那里使用OF
。
文档非常清楚你想要什么,甚至有基于你的"每当日期列更新时的例子"标准:
https://www.postgresql.org/docs/9.1/static/sql-createtrigger.html
也许你想要这样的东西?
CREATE TRIGGER tr_calculate_dow
AFTER UPDATE ON focusblu.events
FOR EACH ROW
WHEN (OLD.date IS DISTINCT FROM NEW.date)
EXECUTE PROCEDURE calculate_dow(NEW.date);
你很可能也想为另一个INSERT触发器做同样的事情,只选择日期。