この記事では、シノニムの作成と削除方法について説明します。
OceanBaseデータベースにおいて、シノニムとはテナントデータベースオブジェクトのエイリアスです。シノニムを使用する主な目的は権限管理の便宜性にあります。これは、シノニムが別のデータオブジェクトの所有者権限を隠すことができるためです。
シノニムの作成
CREATE SYNONYM ステートメントを使用して、シノニムを作成できます。
シノニムを作成する際には、次の点に注意してください:
現在のデータベースまたはスキーマ内でプライベートシノニムを作成する場合、現在のユーザーには
CREATE SYNONYM権限が付与されている必要があります。現在のデータベースまたはスキーマ以外でプライベートシノニムを作成する場合、現在のユーザーには
CREATE ANY SYNONYM権限が付与されている必要があります。パブリックシノニムを作成する場合、現在のユーザーには
CREATE PUBLIC SYNONYM権限が付与されている必要があります。シノニムを作成する対象は存在しなくても構いません。また、現在のユーザーがその対象へのアクセス権限を持っている必要もありません。
ユーザー権限の詳細な操作については、ユーザー権限の確認を参照してください。ユーザー権限の付与に関する詳細な操作については、直接権限付与を参照してください。
シノニムを作成する構文は以下のとおりです:
CREATE [ OR REPLACE ] [ PUBLIC ] SYNONYM [ schema. ]synonym FOR [ schema. ]object;
CREATE SYNONYM ステートメントの詳細については、「SQLリファレンス(Oracleモード)」の章を参照してください。
例:
プライベートシノニムを作成します。
obclient> CREATE TABLE test(c1 int); Query OK, 0 rows affected (0.18 sec) obclient> CREATE SYNONYM s1 for test; Query OK, 0 rows affected (0.05 sec) obclient> INSERT INTO s1 VALUES(1); Query OK, 1 row affected (0.02 sec) obclient> SELECT * FROM s1; +------+ | c1 | +------+ | 1 | +------+ 1 row in set (0.01 sec)パブリックシノニムを作成します。
obclient> CREATE PUBLIC SYNONYM syn_pub FOR test; Query OK, 0 rows affected (0.03 sec) obclient> SELECT * FROM syn_pub; +------+ | c1 | +------+ | 1 | +------+ 1 row in set (0.01 sec)
シノニムの削除
不要なシノニムを削除するには、DROP SYNONYM ステートメントを使用します。
シノニムを削除する際には、次の点に注意してください:
プライベートシノニムを削除する場合、削除対象のシノニムが対応するデータベースまたはスキーマ内に存在し、現在のユーザーが
DROP ANY SYNONYM権限を持っている必要があります。パブリックシノニムを削除する場合、現在のユーザーが
DROP PUBLIC SYNONYM権限を持っている必要があります。また、削除時には
PUBLICキーワードを指定する必要があり、データベースやスキーマを指定することはできません。
ユーザー権限の詳細な操作については、ユーザー権限の確認を参照してください。ユーザー権限の付与に関する詳細な操作については、直接権限付与を参照してください。
シノニムを削除する構文は以下のとおりです:
DROP [PUBLIC] SYNONYM [ schema. ]synonym;
DROP SYNONYM ステートメントの詳細については、「SQLリファレンス(Oracleモード)」を参照してください。
例:
プライベートシノニムを削除します。
obclient> DROP SYNONYM test.s1; Query OK, 0 rows affected (0.03 sec)パブリックシノニムを削除します。
obclient> DROP PUBLIC SYNONYM syn_pub; Query OK, 0 rows affected (0.02 sec)