пытаясь использовать триггер - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь активировать триггер при добавлении нового сотрудника. триггер должен хранить имя пользователя, который сделал вставку, и время, когда это произошло. Использование Oracle базы данных.

Пока мой код для триггера:

CREATE OR REPLACE TRIGGER insert_2    
AFTER INSERT ON employees
for each row    
DECLARE
    vUser varchar(50);
begin

    select user into vUser from dual;

    insert into audit_cheker1 (date_create, inserted_by) 
    values (sysdate(), vUser);

END;
/

Триггер работает, но после того, как я пытаюсь вставить новую запись, он не работает и сообщает мне об ошибке в триггере.

enter image description here

1 Ответ

1 голос
/ 24 апреля 2020

Сообщение об ошибке сообщает, что ваш триггер недействителен, то есть содержит синтаксические ошибки и не может быть скомпилирован. Поэтому вам нужно исправить ошибки компиляции.

Есть несколько способов найти ошибки. Вы можете выполнить запрос:

select * from user_errors
where type = 'TRIGGER'
and name = 'INSERT_2'
/

Вы можете использовать команду SQL* Plus show errors после оператора CREATE TRIGGER.

Или, как кажется, вы используете SQL Разработчик, вы можете открыть триггер в Навигаторе объектов. Вы увидите, что на вкладке есть несколько панелей, одна из которых помечена Errors . Откройте эту панель, чтобы увидеть, что не так.

Вот один бесплатно: хотя технически функция sysdate это особая. Он никогда не принимает никаких параметров, и вызывать его в скобках неправильно. Снимите эти скобки: sysdate().

...