Error(20,56): PLS-00049: bad bind variable 'NEW.NEW_NAME'

481 views Asked by At

I am facing this error while creating a trigger. error - Error(20,56): PLS-00049: bad bind variable 'NEW.NEW_NAME' if anyone can help it will be appreciated. Please refer to my code below Thanks in Advance :)

CREATE OR REPLACE TRIGGER insert_update_delete_employees AFTER
        INSERT OR UPDATE OR DELETE ON employees
        REFERENCING
                OLD AS old
                NEW AS new
        FOR EACH ROW
    ENABLE DECLARE
        v_user  VARCHAR2(20);
        v_count NUMBER;
        v_date  VARCHAR2(20);
    BEGIN
        SELECT
            user,
            to_date(sysdate, 'DD/MON/YYYY HH24:MI:SS')
        INTO
            v_user,
            v_date
        FROM
            dual;
    
        SELECT
            COUNT(1)
        INTO v_count
        FROM
            employees;
    
        IF updating THEN
            INSERT INTO audit_table (
                table_name,
                user_name,
                event,
                event_date,
                table_count,
                new_object_name,
                old_object_name
            ) VALUES (
                'EMPLOYEES',
                v_user,
                'UPDATE',
                v_date,
                v_count,
                :new.new_name,
                NULL
            );
    
            dbms_output.put_line('Table data has been update by user ' || v_user);
            SELECT
                COUNT(*)
            INTO v_count
            FROM
                employees;
    
        ELSIF inserting THEN
            INSERT INTO audit_table (
                table_name,
                user_name,
                event,
                event_date,
                table_count,
                new_object_name,
                old_object_name
            ) VALUES (
                'EMPLOYEES',
                v_user,
                'INSERT',
                v_date,
                v_count,
                :new.new_name,
                :old.old_name
            );
    
            dbms_output.put_line('Table data has been inserted by user ' || v_user);
            SELECT
                COUNT(*)
            INTO v_count
            FROM
                employees;
    
        ELSIF deleting THEN
            INSERT INTO audit_table (
                table_name,
                user_name,
                event,
                event_date,
                table_count,
                new_object_name,
                old_object_name
            ) VALUES (
                'EMPLOYEES',
                v_user,
                'DELETE',
                v_date,
                v_count,
                NULL,
                :old.old_name
            );
    
            dbms_output.put_line('Table data has been deleted by user ' || v_user);
            SELECT
                COUNT(*)
            INTO v_count
            FROM
                employees;`enter code here`
    
        END IF;
    
    END;
1

There are 1 answers

0
Muhammad Faisal On

As you are using sample database schema, So please use :new.first_name column instead of :new.new_name