次のように、IDとNAMEの2つの列とデータを持つテーブルpractise_oneがあります。
ID名:1サミー、2バム、3マム、4パム、5ジャム、
各行のテーブルで挿入、更新、または削除の後に自律トリガーを定義しました。
8 より大きく、practise_one テーブルに挿入されるすべての ID をフィルターで除外して (テーブルに挿入しないように) したいのですが、8 未満の ID のみをテーブルに挿入できます。8 より大きいすべての ID は、別のテーブル practise_one_log に挿入する必要があります。
トリガーの私のアプローチ:
create or replace trigger tr_practise_one
after insert or update or delete on practise_one
for each row
Declare
pragma autonomous_transaction;
id_greater exception;
id_one number(10);
begin
if (:new.id>8) then
rollback;
raise id_greater;
end if;
exception
when id_greater then
insert into practise_one_log values('The Id is greater '||:new.id);
commit;
end tr_practise_one;
私がする時 :
insert into practise_one values (9,'oam');
それぞれの行を「practise_one_log」テーブルに入れることはできますが、行がpractise_oneテーブルに入るのを止めることはできません。
Resultant Output:
ID name :
1 sammy,
2 vam,
3 mam,
4 pam,
5 jam,
9 oam
Expected Output
ID name :
1 sammy,
2 vam,
3 mam,
4 pam,
5 jam