テーブルが変化しているため、トリガー内のSQLステートメントを変化するテーブルに対して実行できないと思われるため、次のトリガーは機能しませんが、11gを使用していないため、複合トリガーを作成できません。宣言セクションに含めようとPRAGMA AUTONOMOUS TRANSACTION;
しましたが、これはコンパイルされません。誰かが私に最善の解決策を提供できますか?
create or replace
trigger fb_pers_id_check2_tr
--after insert on ifsapp.person_info_tab
before insert on ifsapp.person_info_tab
for each row
begin
declare
-- pragma autonomous_transaction;
v_pid_ person_info_tab.person_id%type;
format_name_ person_info_tab.name%type;
begin
v_pid_ := :new.person_id;
select regexp_replace(upper(:new.name), '\W')
into format_name_
from ifsapp.person_info_tab
where person_id = v_pid_;
if length(v_pid_) < 3 and (length(format_name_) < 21 and v_pid_ <> format_name_) then
raise_application_error(-20001, 'Person ID: ' || v_pid_ || 'is not valid, please enter a valid Person ID, e.g. "' || format_name_ || '".');
end if;
end;
end fb_pers_id_check2_tr;
注意: 平易な英語では、このトリガーは、ユーザーが 3 文字未満の長さの個人 ID を設定することを停止することを目的としています。21 文字未満の場合、変数 'format_name_' と等しくありません。