Я пишу простой триггер, который должен просто отправить сообщение с обновленным количеством строк, а также старым значением «Пол» и обновленным значением «Пол». Когда я запускаю обновление, однако я получаю ошибку, что таблица мутирует, и таблица, возможно, не сможет ее увидеть, но я не совсем уверен, почему.Oracle Mutating Trigger
триггер
create or replace trigger updatePERSONS
after update
on PERSONS
for each row
declare
n int;
oldGender varchar(20):= :OLD.Gender;
newGender varchar(20):= :NEW.Gender;
begin
select Count(*)
into n
from PERSONS;
if (oldGender != newGender) then
dbms_output.put_line('There are now '|| n || ' rows after update. Old gender: ' || oldGender
|| ', new Gender: ' || newGender);
end if;
End;
`
я знаю, что он должен делать с отборным заявлением после того, как начать, но как еще я могу получить количество строк?
Проблема заключается в том, что инструкция 'select count (*)' в триггере уровня строки не может ссылаться на таблицу, на которой вы создали триггер. Здесь вы создали триггер в таблице PERSONS, и вы пытаетесь извлечь данные из одной и той же таблицы внутри триггера, что не допускается в Oracle. – San
ОК, я так понял. где я должен положить его вместо этого? или как еще я могу получить счет? – user3587186