sql >> Databasteknik >  >> RDS >> Oracle

Oracle Mutating Trigger

Som @San påpekar, en utlösare på radnivå på persons kan i allmänhet inte fråga persons bord.

Du skulle behöva två utlösare, en utlösare på radnivå som kan se det gamla och nya könet och en utlösare på uttalandenivå som kan räkna. Du kan också, om du använder 11g, skapa en sammansatt trigger med block på både rad- och satsnivå.

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. Visa sammanlänkade värden i SQL Query

  2. Resurser för säkerhetskopiering av MySQL &MariaDB Databas

  3. Sammanfoga flera fält till ett med SQL

  4. Varför lära sig Cassandra med Hadoop?