Как уже отмечали другие, вы не должны создавать объекты, такие как таблицы или триггеры, в схеме SYSTEM. Создайте себе пользователя, предоставьте ему необходимые привилегии (хорошая практика) и используйте этого пользователя и его схему для целей разработки.
Далее - триггеры подряд (один с FOR EACH ROW
в нем), к которым у вас нет доступа таблица, для которой определен триггер, в данном случае это таблица PRODUCT. К счастью, вам не нужно. Значения, которые вы хотите, уже находятся в псевдорядах: OLD или: NEW - я предполагаю, что вы действительно хотите использовать: NEW values:
CREATE OR REPLACE TRIGGER PRODUCT_PRICE_CHECK
BEFORE UPDATE ON PRODUCT
FOR EACH ROW
DECLARE
nMin_price NUMBER := :NEW.STANDARD_COST * 1.2;
BEGIN
IF :NEW.LISTPRICE < nMin_price THEN
DBMS_OUTPUT.PUT_LINE('List price can’t be below '|| nMin_price);
RAISE VALUE_ERROR;
END PRICE_CHECK;
Кроме того, вы не можете выполнить ROLLBACK или COMMIT в триггере - Oracle не позволяет этому произойти.