有人可以帮我修复错误 pls-00049 吗?

Can someone help me to fix an error pls-00049?

我已经为我的 Oracle 任务创建了一个触发器并遇到了一些错误,我正在尝试解决但不知道如何解决。我正在搜索错误修复程序,但没有找到有用的解决方案 请问有人可以帮我做吗?

所以这是我的代码:

   create table sourcetablename_log (
    id  number, 
    operation_date date,
    old_username varchar2(20),
    new_username varchar2(20),
    old_first_name varchar2(20),
    new_first_name varchar2(20),
    old_last_name varchar2(20),
    new_last_name varchar2(20),
    action varchar2(20),
    author varchar2(20)
    );

    create or replace trigger src_log 
    before insert or delete or update on sourcetablename_log
    for each row
    begin
    if inserting then 
    insert into sourcetablename_log(id, operation_date, new_username,  new_firstname, new_lastname)
    values (:new.id, sysdate, :new.username, :new.firstname, :new.lastname);
    elsif updating then 
    insert into sourcetablename_log(id, operation_date, old_username, new_username, old_firstname, new_firstname, old_lastname, new_lastname)
    values (:new.id, sysdate, :old.username, :new.username, :old.firstname, :new.firstname, :old.lastname, :new.lastname);
    elsif deleting then 
    insert into sourcetablename_log(id, operation_date, old_username, new_username, old_firstname, new_firstname, old_lastname, new_lastname)
    values (:new.id, sysdate, :old.username, :new.username, :old.firstname, :new.firstname, :old.lastname, :new.lastname);
    end if;
    end src_log;

这是一个错误:

LINE/COL  ERROR
--------- -------------------------------------------------------------
4/27      PLS-00049: bad bind variable 'NEW.USERNAME'
4/42      PLS-00049: bad bind variable 'NEW.FIRSTNAME'
4/58      PLS-00049: bad bind variable 'NEW.LASTNAME'
7/27      PLS-00049: bad bind variable 'OLD.USERNAME'
7/42      PLS-00049: bad bind variable 'NEW.USERNAME'
7/57      PLS-00049: bad bind variable 'OLD.FIRSTNAME'
7/73      PLS-00049: bad bind variable 'NEW.FIRSTNAME'
7/89      PLS-00049: bad bind variable 'OLD.LASTNAME'
7/104     PLS-00049: bad bind variable 'NEW.LASTNAME'
10/27     PLS-00049: bad bind variable 'OLD.USERNAME'
10/42     PLS-00049: bad bind variable 'NEW.USERNAME'
10/57     PLS-00049: bad bind variable 'OLD.FIRSTNAME'
10/73     PLS-00049: bad bind variable 'NEW.FIRSTNAME'
10/89     PLS-00049: bad bind variable 'OLD.LASTNAME'
10/104    PLS-00049: bad bind variable 'NEW.LASTNAME'
Errors: check compiler log

我的问题是:

自动创建日志记录 table 并与之相关联触发器 A 创建一个存储过程,该过程创建一个 LOGGING table,其中包含对应的旧值列和新值列,ACTION 列,应该被填充通过 ACTION 类型和用户名 (AUTHOR) 示例:您有 table 个 USER 用户,下一列为:

  1. 用户名 VARCHAR
  2. FIRST_NAME VARCHAR
  3. LAST_NAME VARCHAR

您的程序应该生成一个新的 table,名称为“SOURCETABLENAME”_LOG - 在本例中 - USER_LOG 以及下一列:

  1. 身份证号码[或OPERATION_ID号码]
  2. OPERATION_DATE日期
  3. OLD_USERNAME VARCHAR
  4. NEW_USERNAME VARCHAR
  5. OLD_FIRST_NAME VARCHAR
  6. NEW_FIRST_NAME VARCHAR
  7. OLD_LAST_NAME VARCHAR
  8. NEW_LAST_NAME VARCHAR
  9. 动作变量
  10. 作者 VARCHAR**

如果列名是例如new_username,那么您将使用 :new.new_username,而不仅仅是 :new.username

所有其他列也是如此。

例如:

insert into sourcetablename_log(id, operation_date, new_username,  new_firstname, new_lastname)
    values (:new.id, sysdate, :new.new_username, :new.new_firstname, :new.new_lastname);