我有一个包含三列的表:id、date和dateDekete
在使用after update触发器对另一列(列日期(进行更新之后,我尝试对列dateDelete执行更新。我用来创建触发器的代码如下:
CREATE OR REPLACE FUNCTION update_delete_date_allocation()
RETURNS trigger LANGUAGE plpgsql AS $body$
BEGIN
NEW."dateDelete" := NEW.date + 1;
RETURN NEW;
END;
$body$;
CREATE TRIGGER delete_date_allocation_trg
AFTER INSERT OR UPDATE ON client.client_portfolio_allocation
FOR EACH ROW
EXECUTE PROCEDURE update_delete_date_allocation();
尽管代码执行良好,没有错误消息,但我尝试更新的后一列不会更改。
我想知道是否有可能这样做。如果是,我应该在代码中更改什么?
我使用的是Postgres11.5。
您不能在AFTER触发器中更改新记录,您需要将触发器声明为BEFORE触发器:
创建触发器delete_date_allocation_trg之前插入或更新client.client_portfolio_allocation对于每一行执行程序update_delete_date_allocation((