Количество обработанных строк
Предопределенная переменная 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 |