Updates/inserts 在 postgres 触发器函数中不起作用

Updates/inserts not working in postgres trigger function

我有以下函数和触发器-

CREATE OR REPLACE FUNCTION function_copyX() RETURNS trigger AS
$BODY$
BEGIN        
WITH    
    updates (id) AS (
    UPDATE tbl_history
    SET price=0
    FROM tbl
    WHERE tbl.id = tbl_history.id
        AND tbl_history.price=1
    RETURNING tbl_history.id
   )
   INSERT INTO tbl_history 
   SELECT id,1 FROM tbl;

    RETURN new;
    
   END;
$BODY$
language plpgsql;


create  TRIGGER T_X
  AFTER INSERT ON TBL
  FOR EACH ROW
  execute procedure function_copyX();

因此,每当我在 TBL 中插入任何记录时,我都希望 TBL_HISTORY 中有 inserts/updates,但这在触发器函数中不起作用。 但是,如果我单独执行此 'WITH code' 它会起作用。 可能是什么问题?请帮忙

谢谢

以下修改成功!

CREATE OR REPLACE FUNCTION function_copyX() RETURNS trigger AS
$BODY$
BEGIN
    
WITH    
    updates (id) AS (
    UPDATE tbl_history
    SET price=0   WHERE id =NEW.id AND price=1
    RETURNING id
   )
   INSERT INTO tbl_history (id,price) values   (NEW.id,1);

    RETURN new;
    
   END;
$BODY$
language plpgsql;

create  TRIGGER T_X
  AFTER INSERT ON TBL
  FOR EACH ROW
  execute procedure function_copyX();