Проблема создания триггера Oracle - PullRequest
0 голосов
/ 11 декабря 2011

Я работаю над назначением, которое выполняет следующие действия.

создает триггер PL / SQL с именем STAFF_TRIGGER в таблице STAFF.Этот триггер будет выполняться после каждой вставки или обновления.a. Для вставок этот триггер должен поместить новое значение STAFF.STAFF_ID, пользователя в MOD_USER и системную дату в MOD_TIMESTAMP для записи создания данных в STAFF_LOG.Для обновлений этот триггер должен поместить предыдущие значения STAFF в соответствующий столбец STAFF_LOG, а также записать MOD_USER и MOD_TIMESTAMP.

Пока это то, что у меня есть, я использую экспресс-базу данных Oracleиздание.

create trigger staff_trigger
after insert or update on staff
for each row 

begin 

if inserting then 
   insert into staff_log (staff_id, mod_user, mod_timestamp)
   values(new.employee_id, new.last_name, sysdate);
end if;

if updating then  
   insert into staff_log (mod_user, mod_timestamp)
   values(new.last_name, sysdate);
end if;

end;

Когда я выполняю код, я получаю сообщение об ошибке ниже.

ERROR at line 9: PL/SQL: SQL Statement ignored7. if inserting then 
8.    insert into staff_log (staff_id, mod_user, mod_timestamp)
9.    values(new.employee_id, new.last_name, sysdate);
10. end if;

Любые идеи относительно того, что может быть причиной этого?

1 Ответ

1 голос
/ 11 декабря 2011

попробуйте это (:new вместо new)

create trigger staff_trigger
after insert or update on staff
for each row 

begin 

if inserting then 
   insert into staff_log (staff_id, mod_user, mod_timestamp)
   values(:new.employee_id, :new.last_name, sysdate);
end if;

if updating then  
   insert into staff_log (mod_user, mod_timestamp)
   values(:new.last_name, sysdate);
end if;

end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...