Wie @San betont, ein Trigger auf Zeilenebene für persons
kann die persons
generell nicht abfragen Tabelle.
Sie benötigen zwei Trigger, einen Trigger auf Zeilenebene, der das alte und neue Geschlecht sehen kann, und einen Trigger auf Anweisungsebene, der die Zählung durchführen kann. Wenn Sie 11g verwenden, können Sie auch einen zusammengesetzten Trigger mit Blöcken auf Zeilen- und Anweisungsebene erstellen.
create or replace trigger trg_stmt
after update
on persons
declare
l_cnt integer;
begin
select count(*)
into l_cnt
from persons;
dbms_output.put_line( 'There are now ' || l_cnt || ' rows.' );
end;
create or replace trigger trg_row
after update
on persons
for each row
begin
if( :new.gender != :old.gender )
then
dbms_output.put_line( 'Old gender = ' || :old.gender || ', new gender = ' || :new.gender );
end if;
end;