Skip to content

创建同义词

创建同义词权限分为以下三种:

  • 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;

    sql
    CREATE SYNONYM student FOR synonym_table_student;
  • 示例2
    表sysdba.mytablemy_db_link带模式名后过长,创建同义词my_r_tab后即可通过同义词访问:SELECT * FROM my_r_tab;

    sql
    CREATE SYNONYM my_r_tab FOR sysdba.mytablemy_db_link;

    说明:

    • 新创建同义词名称不能与数据库已存在的对象名称相同,否则报错。
    • 同义词存放于系统表sys_synonyms中。