drop COMPOUND_TR_TEST;
create table COMPOUND_TR_TEST(n number);
create or replace trigger COMPOUND_TR_TEST_TR
FOR UPDATE OF n
or delete
or insert ON COMPOUND_TR_TEST
COMPOUND TRIGGER
idx pls_integer:=0;
BEFORE STATEMENT IS
BEGIN
NULL;
END BEFORE STATEMENT;
BEFORE EACH ROW IS
BEGIN
NULL;
END BEFORE EACH ROW;
AFTER EACH ROW IS
BEGIN
idx:=idx+1;
END AFTER EACH ROW;
AFTER STATEMENT IS
BEGIN
dbms_output.put_line('СТРОК - '||idx);
END AFTER STATEMENT;
END COMPOUND_TR_TEST_TR;
/
set serveroutput on;
set echo off;
set heading off;
begin
for i in 1..10
loop
insert into COMPOUND_TR_TEST values(i);
end loop;
end;
/
rollback;
Вот код, в цикле вставляется 10 строк, но триггер срабатывает только один раз. На первой вставке, можно это както исправить или это баг оракла?
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production
PL/SQL Release 11.1.0.7.0 - Production
CORE 11.1.0.7.0 Production
TNS for 64-bit Windows: Version 11.1.0.7.0 - Production
NLSRTL Version 11.1.0.7.0 - Production
SQL>