Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Gatilho Mutante Oracle


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;