Oracle
 sql >> Database >  >> RDS >> Oracle

Trigger mutante Oracle

Come sottolinea @San, un trigger a livello di riga su persons generalmente non può interrogare le persons tabella.

Avresti bisogno di due trigger, un trigger a livello di riga che può vedere il vecchio e il nuovo genere e un trigger a livello di istruzione che può fare il conteggio. Puoi anche, se stai usando 11g, creare un trigger composto con blocchi a livello di riga e di istruzione.

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;