我在插入之前有触发器,但似乎不起作用。
这是我的触发器/功能。
如果新列为空,它将指向记录“未知”,并用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触发器之前填充触发器?我都尝试过,但都不起作用。有什么建议吗?谢谢。