创建同义词
创建同义词权限分为以下三种:
CREATE PUBLIC SYNONYM
:具有创建全局同义词的权限(仅限库级权限)。CREATE SYNONYM
:可以在当前模式创建私有同义词(仅限库级权限)。CREATE ANY SYNONYM
:可以在所有模式下创建私有同义词(仅限库级,模式级权限)。
注意:
创建同义词前请确认目标对象是否有读取权,若没有读取权,则报权限不足错误。
语法格式
sql
CreateSynonymStmt::=
CREATE [OR REPLACE] [PUBLIC] SYNONYM [schema_syn_name.]synonym_name FOR [schema_obj_name.]object_name ;
参数说明
OR REPLACE
:指定同义词存在则替换,用于更新同义词定义。PUBLIC
:指定同义词属性,使用参数表示同义词为公共同义词。chema_syn_name
:指定包含同义词的模式。如果省略schema,那么将在您自己的schema中创建同义词。如果指定了PUBLIC,则不能为同义词指定模式会报错。synonym_name
:同义词名称。schema_obj_name
:指定目标对象的模式,如果省略schema,那么将为您自己的schema中的目标对象创建同义词。object_name
:同义词映射对象名称。
示例
示例1
表synonym_table_student创建一个同义词student。当用户查询synonym_table_student表时就可以这样使用:SELECT * FROM student;
。sqlCREATE SYNONYM student FOR synonym_table_student;
示例2
表sysdba.mytablemy_db_link带模式名后过长,创建同义词my_r_tab后即可通过同义词访问:SELECT * FROM my_r_tab;
。sqlCREATE SYNONYM my_r_tab FOR sysdba.mytablemy_db_link;
说明:
- 新创建同义词名称不能与数据库已存在的对象名称相同,否则报错。
- 同义词存放于系统表sys_synonyms中。