【发布时间】:2019-06-01 22:40:18
【问题描述】:
我有桌子Ticketforsale:
Ticketsforsale(ticket_id, starting_date, price)
我需要创建一个触发器函数,如果“starting_date”更新,除了将“价格”降低 20% 之外,还将用更新的“starting_date”替换旧的“starting_date”。
目前我想出的触发函数如下:
create or replace function automatic_update()
RETURNS TRIGGER AS $$
begin
IF new.starting_date != ticketsforsale.starting_date
THEN old.starting_date = new.starting_date ,
ticketsforsale.price = ticketsforsale.price * (20/100) ;
END IF ;
RETURN NEW ;
END ;
$$
LANGUAGE plpgsql ;
CREATE TRIGGER automation
BEFORE INSERT OR UPDATE ON public.ticketsforsale
FOR EACH ROW EXECUTE PROCEDURE automatic_update()
触发功能代码运行正常,没有任何错误。
但是当我更新“starting_date”列的值并尝试保存更改时,我收到以下错误:
表“ticketsforsale”第 1 行缺少 FROM 子句条目:SELECT new.starting_date != ticketforsale.starting_date * QUERY: SELECT new.starting_date != ticketforsale.starting_date 上下文:PL/pgsql 函数自动更新()在 IF 的第 3 行
我已经对函数进行了相当多的修改。不过我好像没弄好,谢谢。
【问题讨论】:
标签: sql postgresql database-trigger