Zoals @San aangeeft, een trigger op rijniveau op persons
kan over het algemeen niet de persons
ondervragen tafel.
Je hebt twee triggers nodig, een trigger op rijniveau die het oude en nieuwe geslacht kan zien en een trigger op statementniveau die de telling kan doen. U kunt ook, als u 11g gebruikt, een samengestelde trigger maken met blokken op rij- en instructieniveau.
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;