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

Oracle Mutating Trigger

Som @San påpeger, en trigger på rækkeniveau på persons kan generelt ikke forespørge persons tabel.

Du skal bruge to udløsere, en udløser på rækkeniveau, der kan se det gamle og nye køn, og en udløser på udsagnsniveau, der kan tælle. Du kan også, hvis du bruger 11g, oprette en sammensat trigger med blokke på både række- og sætningsniveau.

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;



  1. Sådan installeres MariaDB-databasen i Debian 10

  2. Vælg fra mysql indsat i variabel VB.NET

  3. Sådan giver du brugere skrivebeskyttet adgang til alle databaser

  4. Er det begrebsmæssigt rigtigt at lave et SELECT MAX(id) osv. for at finde den sidst indsatte række?