背景
Javaに直接書き込んだSQLを、Javaに書き込むテーブル名を設計書・コードを含め明記しないやり方にして欲しいとのことで、SYNONYMを利用。難しい手順はないのだが、忘れそうなので備忘録として残していく。
SYNONYMとは
あるテーブル名に任意の別名をつけて、その別名でデータアクセスできるようにすること。
例:
テーブル名:HONMONOがあったときに、別名:BETSUMEIをつけたとすると、
SELECT * FROM BETSUMEI
で,HONMONOデータを参照することができる。
人間で言うとこのニックネームって感じ。「田中太郎」を「たっちゃん」って呼ぶような。
これなら設計書・ソース上に、「たっちゃん」って書けるから、「田中太郎」って正式名称を明記せずに済む。
手順
※データアクセスできる権限があることを前提に話進めます。
SYNONYMを付与する。
CREATE PUBLIC SYNONYM BESTUMEI FOR HONMONO
「PUBLIC」外すことで、別ユーザーからは使用できないようにすることもできる。
CREATE SYNONYM BESTUMEI FOR HONMONO
別名を変更する。
別名を付与した後、その別名を変更することができる。
RENAME BETSUMEI TO HENKOU
別名を削除する。
別名が不要になった場合の削除手順。
DROP PUBLIC SYNONYM BETSUMEI
SYNONYMの確認
どのテーブルに別名が付与されているか確認する。
※DB2の手順であり、その他オラクルなどのDBでは確認できません。
SELECT TABNAME, BASE_TABNAME FRON SYSCAT.TABLE
TABNAME = 別名
BASE_TABNAME = テーブル名(本名)
以上。