2017-01-18 3 views
0

Не могу видеть, где я ошибаюсь в своем коде ... Может кто-нибудь объяснить мне, что я делаю неправильно? Я судимо все от :new."new_name" к кладя префикс таблицы :NEW.sh_name к :NEW.name не знаю, что еще делать ...PLS-00049: неверная переменная связывания?

Вот таблица:

CREATE TABLE sh_auro (
   new_name   varchar2(30), 
   old_name   varchar2(30), 
   user_name   varchar2(30), 
   entry_date   varchar2(30), 
   operation   varchar2(30) 
); 

и вот супергерой стол:

create table superhero(
    v_name varchar2(20) 
); 

здесь триггер:

create or replace trigger superhero_auro 
before insert or delete or update on superhero 
for each row 
enable 

declare 
    v_user varchar2(30); 
    v_time varchar2(30); 
begin 
select user, TO_CHAR(sysdate, 'DD/MON/YYYY HH24:MI:SS') into v_user, v_time from dual; 
if inserting then 
    insert into sh_auro(new_name, old_name, user_name, entry_date, operation) values(:NEW.new_name, null, v_user, v_time, 'Insert'); 
elsif deleting then 
    insert into sh_auro(new_name, old_name, user_name, entry_date, operation) values(null, :OLD.old_name, v_user, v_time, 'Delete'); 
elsif updating then 
    insert into sh_auro(new_name, old_name, user_name, entry_date, operation) values(:NEW.new_name, :OLD.old_name, v_user, v_time, 'Update'); 
end if; 
end; 

и h прежде чем ошибка:

Error(7,82): PLS-00049: bad bind variable 'NEW.NEW_NAME' 
Error(9,88): PLS-00049: bad bind variable 'OLD.OLD_NAME' 
Error(11,82): PLS-00049: bad bind variable 'NEW.NEW_NAME' 
Error(11,97): PLS-00049: bad bind variable 'OLD.OLD_NAME' 

ответ

2

Вы создаете триггер на столе супергероя - это не имеет столбцы новое_имя и old_name - поэтому вы не можете использовать: new.new_name или: old.new_name.

То, что вы должны использовать это: new.v_name и: old.v_name

+0

Боже мой, положит пулю в моем мозге ... ТНХ для ответа он работает :)) – mskrpan

+0

:) Пожалуйста, не» t далеко –

+0

Да не буду этого делать :) .. but thx еще 1 раз ... – mskrpan

Смежные вопросы