create or replace trigger TRI_SEQ_LOG
after update of SEQ_NUM on HR.KEY_SEQ for each row
declare
SYS_DATE DATE;
LOGGIN_USER VARCHAR2(100);
MACHINE_NAME VARCHAR2(100);
IP VARCHAR2(100);
NEW_VAL NUMBER;
OLD_VAL NUMBER;
ACTION VARCHAR2(100);
TABLE_NAME VARCHAR2(100);
begin
select sysdate , SYS_CONTEXT('USERENV','SESSION_USER') , SYS_CONTEXT('USERENV','TERMINAL') , SYS_CONTEXT('USERENV','IP_ADDRESS') into SYS_DATE,LOGGIN_USER,MACHINE_NAME,IP from DUAL;
if OLD.T_NAME='T_A' then
insert into HR.KEY_SEQ_LOG values(:SYS_DATE,:LOGGIN_USER,:MACHINE_NAME,:IP,:NEW.KEY_SEQ_NUM,:OLD.KEY_SEQ_NUM, 'update',:OLD.T_NAME);
end if;
end;
上面是语法,第一次用oracle的触发器,不知道哪里有问题,谢谢大家
after update of SEQ_NUM on HR.KEY_SEQ for each row
declare
SYS_DATE DATE;
LOGGIN_USER VARCHAR2(100);
MACHINE_NAME VARCHAR2(100);
IP VARCHAR2(100);
NEW_VAL NUMBER;
OLD_VAL NUMBER;
ACTION VARCHAR2(100);
TABLE_NAME VARCHAR2(100);
begin
select sysdate , SYS_CONTEXT('USERENV','SESSION_USER') , SYS_CONTEXT('USERENV','TERMINAL') , SYS_CONTEXT('USERENV','IP_ADDRESS') into SYS_DATE,LOGGIN_USER,MACHINE_NAME,IP from DUAL;
if OLD.T_NAME='T_A' then
insert into HR.KEY_SEQ_LOG values(:SYS_DATE,:LOGGIN_USER,:MACHINE_NAME,:IP,:NEW.KEY_SEQ_NUM,:OLD.KEY_SEQ_NUM, 'update',:OLD.T_NAME);
end if;
end;
上面是语法,第一次用oracle的触发器,不知道哪里有问题,谢谢大家
改成
insert into HR.KEY_SEQ_LOG values(SYS_DATE,LOGGIN_USER,MACHINE_NAME,IP,:NEW.KEY_SEQ_NUM,:OLD.KEY_SEQ_NUM, 'update',:OLD.T_NAME);
试试
create or replace trigger TRI_SEQ_LOG
after update of SEQ_NUM on HR.KEY_SEQ for each row
declare
SYS_DATE DATE;
LOGGIN_USER VARCHAR2(100);
MACHINE_NAME VARCHAR2(100);
IP VARCHAR2(100);
NEW_VAL NUMBER;
OLD_VAL NUMBER;
ACTION VARCHAR2(100);
TABLE_NAME VARCHAR2(100);
begin
select sysdate , SYS_CONTEXT('USERENV','SESSION_USER') , SYS_CONTEXT('USERENV','TERMINAL') , SYS_CONTEXT('USERENV','IP_ADDRESS') into SYS_DATE,LOGGIN_USER,MACHINE_NAME,IP from DUAL;
if :OLD.T_NAME='T_A' then
insert into HR.KEY_SEQ_LOG values(SYS_DATE,LOGGIN_USER,MACHINE_NAME,IP,:NEW.KEY_SEQ_NUM,:OLD.KEY_SEQ_NUM, 'update',:OLD.T_NAME);
end if;
end;