Oracle
 sql >> Base de données >  >> RDS >> Oracle

Déclencheur de mutation Oracle

Comme le souligne @San, un déclencheur au niveau de la ligne sur persons ne peut généralement pas interroger les persons tableau.

Vous auriez besoin de deux déclencheurs, un déclencheur au niveau de la ligne qui peut voir l'ancien et le nouveau sexe et un déclencheur au niveau de l'instruction qui peut faire le décompte. Vous pouvez également, si vous utilisez 11g, créer un déclencheur composé avec des blocs au niveau de la ligne et de l'instruction.

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;