在更新触发器之后更新中的另一列



我有一个包含三列的表: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((

最新更新