Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle Mutating Trigger

Както посочва @San, тригер на ниво ред върху persons обикновено не може да прави заявки за persons таблица.

Ще ви трябват два тригера, тригер на ниво ред, който може да види стария и новия пол, и тригер на ниво изявление, който може да направи преброяването. Можете също така, ако използвате 11g, да създадете съставен тригер с блокове както на ниво ред, така и на ниво израз.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle rollup функция с множество колони

  2. Извикване на запаметена процедура на Oracle с изходен параметър от SQL Server

  3. Oracle Брави и ключалки за маса:Как работи

  4. Използване на Oracle и PHP:Работи в SQL Developer, но резултатите от PHP файл ORA-00900:Невалидно изявление

  5. Не може да се зареди динамична библиотека 'C:\xampp\php\ext\php_oci8.dll' - %1 не е валидно Win32 приложение