Количество обработанных строк

 

Предопределенная переменная ROWCOUNT содержит количество строк, реально обработанное последней командой. Триггер запускается не при попытке изменить конкретную строку, а в момент выполнения команды изменения.

Для операций DELETE и UPDATE (в том числе для каскадных операций), а также для операции INSERT FROM SELECT переменная ROWCOUNT содержит общее количество удалённых или модифицированных записей (для каскадных операций – количество удалённых/модифицированных записей на текущем уровне), для операций INSERT, DELETE CURRENT, UPDATE CURRENT переменная содержит значение 1.

Пример

Следует различать предопределенную переменную ROWCOUNT и функцию rowcount() (которая возвращает количество записей в курсоре).

create or replace table test(i int);
insert into test values(1);
insert into test values(2);
create or replace table test_result(ch char(20));
create or replace trigger test_tr before update on test for each statement execute FOR DEBUG
code
  execute "insert into test_result(ch) values(?);" using itoa(rowcount); //
  execute "select make from auto;"; //
  execute "insert into test_result(ch) values(?);" using itoa(rowcount()); //
end;
update test set i = 100;
select * from test_result;

|2            |
|1000         |