Триггер оракула срабатывает ora-04098

Ищу некоторую базовую помощь, возможно, опечатку в коде.

У меня есть следующее:

create table scott.original(mystr varchar2(10))
insert into scott.original values('hi')
select * from scott.original

CREATE OR REPLACE TRIGGER scott.original_trigger
AFTER INSERT ON scott.original
FOR EACH ROW
BEGIN
 select 'deleting or updating' from dual
END;
/

insert into scott.original values('bye')

Там вставка "bye" выдает ошибку ora-04098, я не вижу проблемы в oracle, предоставленной в первый раз, я пытаюсь создать триггер в oracle.

1 ответ

Любой SELECT в блоке PL/SQL должен выбрать данные INTO некоторой переменной.

CREATE OR REPLACE TRIGGER scott.original_trigger
AFTER INSERT ON scott.original
FOR EACH ROW
DECLARE
 l_variable VARCHAR2(100);
BEGIN
 select 'deleting or updating' 
 into l_variable
 from dual
END;
/

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

licensed under cc by-sa 3.0 with attribution.