@Sanが指摘しているように、persons
の行レベルのトリガー 通常、persons
にクエリを実行することはできません テーブル。
2つのトリガーが必要です。古い性別と新しい性別を確認できる行レベルのトリガーと、カウントを実行できるステートメントレベルのトリガーです。 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;