Итак, у меня есть функция, которая задает идентификатор пользователя, вычисляет его bmi (индекс массы тела) на основе его последнего измерения веса (у меня есть таблица, в которой записаны все измерения), и я хочу закодируйте триггер, который каждый раз, когда пользователь вставляет свой вес, триггеры проверяют, находится ли пользователь bmi ниже предела. Функция нормально, но я не могу получить триггер работать, вот что у меня есть:Вызов функции внутри триггера в PL/SQL
1 CREATE OR REPLACE
2 TRIGGER BMITG
3 AFTER INSERT ON WEIGHTS
4 BEGIN
5 IF BMI(USRID)>25
6 THEN raise_application_error(-20001,'Please control your weight.');
7 END IF;
8 END;
Но я получаю ошибки: Error (6,3): PL/SQL: Заявление игнорировали Error (6,10): PLS-00201: идентификатор IDENT должен быть объявлен
Я думаю, проблема в том, что db не знает, что USRID является идентификатором пользователя INSERT, который активирует триггер. Как я могу решить эту проблему? BTW таблица WEIGHTS имеет идентификатор пользователя (номер), дату и вес (число).
С уважением
Спасибо, триггер в настоящее время составляет, но я получаю «ORA-04091: имя таблицы мутирует, триггер/функция может не увидеть» при установке на столе – danielnovais92
@DanielNovais - Внутри запуска вы не можете 'select' из таблицу, на которой создан ваш триггер. Используйте ': new.column_name' для чтения данных из столбца' column_name' вставки строки. –