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