Postgres触发器不适用于插入

时间:2019-10-02 14:19:16

标签: postgresql

我在插入之前有触发器,但似乎不起作用。

这是我的触发器/功能。

如果新列为空,它将指向记录“未知”,并用sysdate填充另一列。

CREATE OR REPLACE FUNCTION
"ECISDRDM"."TRIGGER_FCT_TR_APPLICATION_CDIM_INS"()
    RETURNS trigger AS $BODY$

declare     v_ErrorCode int;    v_ErrorMsg  varchar(512);
    v_Module    varchar(32) := 'TR_APPLICATION_CDIM_INS';

begin       ----    -- If this is an INSERT operation   ----    
if TG_OP = 'INSERT' then        ----        -- This just ensures that the filename is not null      ----        
if NEW.mig_filename is null then
           NEW.mig_filename := 'Unknown';       end if;
                NEW.mig_insert_dt   := now();   end if;

    ----    -- Exception error handler  ----    exception   when others then
        v_ErrorCode := SQLSTATE;        v_ErrorMsg  := SQLERRM;

        insert into ecisdrdm.errorlog(tstamp, 
            os_user,host,module,errorcode,errormsg)         values
            (CURRENT_TIMESTAMP, sys_context('userenv','session_user'),
            sys_context('userenv','host'), v_Module, v_ErrorCode, v_ErrorMsg);      
  RETURN NEW; 
end $BODY$ 
language 'plpgsql';

CREATE TRIGGER "TR_APPLICATION_CDIM_INS" BEFORE INSERT ON
"ECISDRDM"."APPLICATION_CDIM" FOR EACH ROW EXECUTE PROCEDURE
    "ECISDRDM"."TRIGGER_FCT_TR_APPLICATION_CDIM_INS"() ;

在代码内部我应该在INSERT触发器之前还是AFTER INSERT触发器之前填充触发器?我都尝试过,但都不起作用。有什么建议吗?谢谢。

0 个答案:

没有答案