Невозможно создать триггер в Oracle SQL - PullRequest
0 голосов
/ 15 октября 2019

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

CREATE OR REPLACE TRIGGER Audit_Salaries
AFTER UPDATE ON EMPLOYEES
FOR EACH ROW
BEGIN
    IF (:NEW.Salary > :OLD.Salary*1.20) THEN
        INSERT INTO Salary_Audit (EmployeeID, OldSalary, NewSalary,Username, ChangeDate)
            VALUES (:NEW.employee_id, :OLD.Salary,:NEW.Salary, user, sysdate);
    END IF;
 END;
/ 

Warning: Trigger created with compilation errors.

И вот результат, который я получаю:

Warning: Trigger created with compilation errors.

Я пытался прочитать другие подобные ответы, но решения, которые там уже данысуществует в моем (синтаксис).

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

Я ожидаю, что триггер будет создан без каких-либо ошибок компиляции вместе с пониманием того, что не так в моем запросе.

Ответы [ 4 ]

3 голосов
/ 15 октября 2019

Вы можете увидеть ошибку компиляции, используя DBA_ERRORS.

SELECT * FROM DBA_ERRORS  WHERE NAME = 'AUDIT_SALARIES';
1 голос
/ 14 ноября 2019

Попробуйте, это решит ваш запрос:

SELECT * FROM DBA_ERRORS  WHERE NAME = 'AUDIT_SALARIES'

OR 

SELECT * FROM USER_ERRORS  WHERE NAME = 'AUDIT_SALARIES';
1 голос
/ 15 октября 2019

Чтобы увидеть подробности ошибки компиляции, вы можете запросить системное представление USER_ERRORS (или DBA_ERRORS):

SELECT * FROM USER_ERRORS  WHERE NAME = 'AUDIT_SALARIES';

Я не могу воспроизвести ошибку, которую вы получаете, ваш код успешно компилируетсякогда я запускаю его на 11gR2 и 18c. Я могу только предположить, что есть ошибка в именах столбцов исходной таблицы employees или целевой таблицы salary_audit.

Демонстрация на БД Fiddle

0 голосов
/ 15 октября 2019

Вы пометили SQL Developer.

Вы используете SQL Developer?

Потому что, если вы ...

enter image description here

Мы автоматически делаем «показ ошибок» для вас при компиляции, когда возвращаются ошибки / предупреждения. Вы также можете увидеть сообщения компилятора на вкладке «Компилятор» - он должен открываться автоматически при запуске.

Если вы этого не видите, я предполагаю, что вы работаете с какой-то версией SQL Developerгде ошибка препятствует этому, но я не знаю версию, где это было бы правдой.

...