1.
wrong description
ORACLE-04082: NEW or OLD references not allowed in table level triggers
solution:
new and :old can only be used for row-level triggers, not statement-level triggers, just add the sentence FOR EACH ROW
create or replace trigger drs_asynchronous_trig before insert on drs_asynchronous FOR EACH ROW declare -- local variables here v_trigger_user varchar2(100); v_trigger_date date; v_sqlcode varchar2(6); v_sqlerrm varchar2(200); v_error_comment varchar2(300); begin v_error_comment := 'before get_user'; v_trigger_user := user; v_trigger_date := sysdate; :new.FCU := v_trigger_user; :new.FCD := v_trigger_date; :new.LCU := v_trigger_user; :new.LCD := v_trigger_date; SELECT DRS_ASYNCHRONOUS_ID_SEQ.NEXTVAL INTO :NEW.PK_SERIAL# FROM DUAL; exception when others then v_sqlcode := sqlcode; v_sqlerrm := substr(sqlerrm, 1, 200); INSERT INTO tr_error_log (error_no, error_message, trigger_name, trigger_user, trigger_date, error_comment ) VALUES (v_sqlcode, v_sqlerrm, 'drs_asynchronous_trig', v_trigger_user, v_trigger_date, v_error_comment); end drs_asynchronous_trig; |
2. The resume trigger permission is insufficient, you need a system dba identity to enter, modify the assignment
conn / as sysdba;
grant create any trigger to kl;
If you are afraid of trouble, just
grant dba to kl; |