「update ~ set row = ~」の書式は、カラムが大量にあるテーブルに対する更新を行うときのパフォーマンスアップには効果がある場合がありそうだが、いろいろ制約がある。
そのひとつが全カラムが更新対象であることだ。
例えば、「作成日時」なんてカラムがあった場合、この値は変更したくない。
そんなときはそのままじゃ使えない。
でも、発想の転換。
ビューを作れば、すべてのカラムを更新せずとも「update ~ set row = ~」の書式が使用できる。
もちろん、ビューの対象カラム以外の値は変更されない。
以下がそのサンプル。
=====
【テーブル・ビューの状態】
testtab(テスト用テーブル)
key
col1
col2
col3
testview(testtabのview)
key
col1
col2
=====
【PL/SQLプログラム】
create or replace function funcname
return number
is
vdata testview%rowtype;
begin
vdata.key := 'keyvalue';
vdata.col1 := 'after value1';
vdata.col2 := 'after value2';
update testview set row = vdata where key = vdata.key;
return 0;
end;
/
=====
0 件のコメント:
コメントを投稿