SQL DCL:シノニム
シノニムとは?
スキーマ/非スキーマ オブジェクトのエイリアス(別名)
管理者用、閲覧者用に権限を振り分ける等の目的で使用される。
表/ビュー/順序/ストアド・プロシージャ/ファンクション/シノニム
あくまで別名。
権限の代わりにはならない。
プライベート/パブリック問わず、元のオブジェクトへのアクセス権限が無ければ操作できない。
userA、userBが居るとして。
userAのスキーマにmyTableがある。
userBは、
SELECT * FROM userA.myTable;
と常にユーザーを意識する必要がある。
↓
CREATE PUBLIC SYSNONYM mySynonym FOR userA.myTable;
↓
SELECT * FROM mySynonym;
・ユーザー名、テーブル名を隠蔽できる為、一般ユーザーに対するセキュリティが高まる
・スキーマの変更の際、シノニムの定義を変更するだけで済む
CREATE SYNONYM
自分専用。作成者しか使えない。
CREATE SYNONYM (シノニム名) FOR (ユーザー名).(オブジェクト)
パブリック・シノニム
DB利用者共有用
CREATE PUBLIC SYNONYM (シノニム名) FOR (ユーザー名).(オブジェクト)
DROP SYNONYM
DROP SYNONYM (シノニム名);
パブリック・シノニム
DROP PUBLIC SYNONYM (シノニム名);
使用
パブリックシノニムは全ユーザー使用(指定)可能。
CREATE SYNONYM シノニム名 FOR ユーザー名.表名
SELECT * FROM シノニム名 ~
UPDATE シノニム名 ~
使える(シノニムを指定する)事と、オブジェクトに対するアクセス権限は別。
シノニムを作成したとして、シノニムを使用できても、
シノニムの元オブジェクトへのアクセス権限が無ければデータを取得できないのでエラー