Como @San aponta, um gatilho em nível de linha em
persons
geralmente não pode consultar as persons
tabela. Você precisaria de dois gatilhos, um gatilho em nível de linha que pode ver o sexo antigo e novo e um gatilho em nível de instrução que pode fazer a contagem. Você também pode, se estiver usando 11g, criar um gatilho composto com blocos de nível de linha e de instrução.
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;