説明
このステートメントは、シノニムを作成するために使用されます。
構文
CREATE [ OR REPLACE ] [ PUBLIC ] SYNONYM [ synonym_schema. ]synonym_name
FOR [ object_schema. ]object_name;
パラメータの説明
| パラメータ | 説明 |
|---|---|
| OR REPLACE | 既存のシノニム名が存在する場合、新しい定義でシノニムを再作成することを示します。 |
| PUBLIC | PUBLIC を指定してパブリックシノニムを作成すると、すべてのユーザーが使用できるようになります。ユーザーは基礎オブジェクトに対する適切な権限を持っている必要があります。オブジェクトの参照を解決する際、オブジェクトにスキーマが指定されていない場合にのみ、パブリックシノニムが使用されます。 PUBLIC を指定しない場合、シノニムはプライベートであり、現在のスキーマからのみアクセス可能であり、シノニム名は現在のスキーマ内で一意である必要があります。 |
| synonym_schema | シノニムが属するスキーマを指定します。 schema. を省略した場合、デフォルトではシノニムは自身のスキーマ内に存在します。 PUBLIC を指定した場合、シノニムに対して schema を指定する必要はありません。 |
| synonym_name | シノニムの名前を指定します。 |
| object_schema | シノニムを作成するオブジェクトが属するスキーマを指定します。 schema. を省略した場合、デフォルトではシノニムを作成するオブジェクトは自身のスキーマ内に存在します。 |
| object_name | シノニムが対応するオブジェクトの名前を指定します。 |
例
テーブルのシノニムを作成します。
obclient> CREATE TABLE tbl1(col1 INT,col2 INT); Query OK, 0 rows affected obclient> CREATE SYNONYM syn1 FOR tbl1; Query OK, 0 rows affected obclient> INSERT INTO syn1 values(1,1); Query OK, 1 row affected obclient> SELECT * FROM syn1; +------+------+ | COL1 | COL2 | +------+------+ | 1 | 1 | +------+------+ 1 row in setPUBLICシノニムを作成します。obclient> CREATE PUBLIC SYNONYM syn2 FOR tbl1; Query OK, 0 rows affected
注意事項
シノニムを作成する際には、以下の権限要件を満たす必要があります:
現在のスキーマでプライベートなシノニムを作成するには、
CREATE SYNONYM権限が必要です。現在のスキーマ以外でプライベートなシノニムを作成するには、
CREATE ANY SYNONYM権限が必要です。PUBLICのシノニムを作成するには、CREATE PUBLIC SYNONYM権限が必要です。シノニムを作成する対象となるオブジェクトは存在しなくてもよく、またアクセス権限を持っていなくても構いません。
/*ユーザー synonym_user を作成*/
obclient> CREATE USER synonym_user IDENTIFIED BY synonym_user;
Query OK, 0 rows affected
obclient> GRANT CREATE ON *.* TO synonym_user;
Query OK, 0 rows affected
obclient> GRANT SELECT ON *.* TO synonym_user;
Query OK, 0 rows affected
/*ユーザー synonym_user に接続*/
obclient> CREATE OR REPLACE SYNONYM syn1 FOR tbl1;
ERROR-00600: internal error code, arguments: -5036, Access denied; you need (at least one of) the CREATE SYNONYM privilege(s) for this operation
/*ユーザー synonym_user に CREATE SYNONYM 権限を付与*/
obclient> GRANT CREATE SYNONYM TO synonym_user;
Query OK, 0 rows affected
obclient> CREATE OR REPLACE SYNONYM syn1 FOR tbl1;
Query OK, 0 rows affected