データをテーブルにロードした直後に文字を置き換える特定のユーザーのトリガーを作成することは可能ですか?
たとえば、ユーザーがデータをテーブルにロードするときに、PERS_ID列のすべての「1」を「9」に置き換える必要があります。
私はPLSQLの初心者なので、どこから始めればよいのかさえわかりません。
自分の目標を明確にできるかどうかわからないので、遠慮なく説明を求めてください。
技術的には、確かに可能です...(簡単にするために、pers_id
それは数値ではなく文字列であると想定しています。数値の場合は、もちろん、文字列に変換し、を実行して、replace
元に戻すことができます。トリガー内の数値に)
SQL> create table foo( pers_id varchar2(10) );
Table created.
SQL> create trigger replace_data
2 before insert on foo
3 for each row
4 begin
5 :new.pers_id := replace( :new.pers_id, '1', '9' );
6 end;
7 /
Trigger created.
SQL> insert into foo values( '123abc456' );
1 row created.
SQL> select * from foo;
PERS_ID
----------
923abc456
ただし、実際には、要件は非常に奇妙に思えます。トリガーを使用して挿入されているデータをサイレントに変更することは、デバッグを非常に困難にする傾向があるため、一般的にはお勧めできません。将来の開発者は、テーブルに挿入したデータがテーブルのクエリ時に表示されるデータと一致せず、トリガーによってデータが変更されたことをすぐに理解できない場合、かなり驚かれる可能性があります。解決しようとしているビジネス上の問題を説明できれば、より適切な技術的解決策を考え出すことができるでしょう。