sql >> Databáze >  >> RDS >> Oracle

Oracle Mutating Trigger

Jak zdůrazňuje @San, spouštěč na úrovni řádku u persons nelze obecně dotazovat persons tabulka.

Potřebovali byste dva spouštěče, spouštěč na úrovni řádku, který dokáže zobrazit staré a nové pohlaví, a spouštěč na úrovni příkazu, který dokáže počítat. Pokud používáte 11g, můžete také vytvořit složený spouštěč s bloky na úrovni řádků i příkazů.

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. mysql aktualizuje sloupec s int na základě objednávky

  2. Jak provedu velké neblokující aktualizace v PostgreSQL?

  3. Jediné potvrzení při importu velmi velkých souborů SQL (MySQL)

  4. Jak aktualizovat tabulku v oracle