【问题标题】:Set trigger NEW to returning value of UPDATE将触发器 NEW 设置为 UPDATE 的返回值
【发布时间】:2020-05-01 16:02:41
【问题描述】:

我正在尝试更新触发器内的增量计数器并将其分配给 NEW。

CREATE OR REPLACE FUNCTION public.set_export_increment_and_update_schema()
    RETURNS trigger
    LANGUAGE 'plpgsql'
    VOLATILE
AS $BODY$BEGIN

NEW.increment := UPDATE export_schema
    SET "exportsIncrement" = "exportsIncrement" + 1
    WHERE id = NEW."schemaId" 
    RETURNING "exportsIncrement";

RETURN NEW;
END;
$BODY$;

但是,我遇到了语法错误。如果我单独运行更新查询,它可以正常工作,但是一旦我尝试将它分配给新的,就会出现此错误。

ERROR: syntax error at or near "SET"
LINE 9: SET "exportsIncrement" = "exportsIncrement" + 1

【问题讨论】:

    标签: sql postgresql triggers


    【解决方案1】:

    您从更新中返回值的语法完全不正确。您在尝试时不要/不能使用赋值语句。相反,您使用 return... into ...

    create or replace function public.set_export_increment_and_update_schema()
        returns trigger
        language 'plpgsql'
        volatile
    as $body$
    begin
    
     update export_schema
        set "exportsincrement" = "exportsincrement" + 1
        where id = new."schemaid" 
        returning "exportsincrement" into new.increment;
    
    return new;
    end;
    $body$;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-07
      • 1970-01-01
      • 2016-01-29
      • 1970-01-01
      • 2013-01-24
      相关资源
      最近更新 更多