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 シノニム名 ~

使える(シノニムを指定する)事と、オブジェクトに対するアクセス権限は別。
シノニムを作成したとして、シノニムを使用できても、
シノニムの元オブジェクトへのアクセス権限が無ければデータを取得できないのでエラー