在 OceanBase 数据库中,同义词是一个租户数据库对象的别名。使用同义词通常是为了管理权限方便,因为同义词可以隐藏另外一个数据对象的所有者权限。

    您可以使用 语句来创建同义词。

    创建同义词时:

    • 如果在当前数据库或 Schema 下创建私有同义词,则当前用户需要具备 CREATE SYNONYM 权限。

    • 如果在非当前数据库或 Schema 下创建私有同义词,则当前用户需要具备以下权限:

      • MySQL 租户:CREATE SYNONYM 权限

      • Oracle 租户: CREATE ANY SYNONYM 权限

    • 如果创建公共同义词,则当前用户需要具备以下权限:

      • MySQL 模式:CREATE SYNONYM 权限

      • Oracle 模式: CREATE PUBLIC SYNONYM 权限

    • 创建同义词的对象可以不存在,当前用户也不需要具有该对象的访问权限。

    • MySQL 模式

      MySQL 模式下 CREATE SYNONYM 语句的更多信息,请参见《SQL 参考(MySQL 模式)》文档中的 CREATE SYNONYM 章节。

    • Oracle 模式

        Oracle 模式下 CREATE SYNONYM 语句的更多信息,请参见《SQL 参考(Oracle 模式)》文档中的 章节。

      示例:

      • 创建一个私有同义词。

      • 创建一个公共同义词。

        1. obclient> CREATE PUBLIC SYNONYM syn_pub FOR test;
        2. obclient> SELECT * FROM syn_pub;
        3. +------+
        4. | c1 |
        5. +------+
        6. | 1 |
        7. +------+

      删除同义词

      您可以使用 DROP SYNONYM 语句来删除不需要使用的同义词。

      删除同义词时:

      • 如果删除的是私有同义词,则需要保证待删除的同义词在对应的数据库或 Schema 下,且当前用户需要具备以下权限:

        • MySQL 租户: 权限

      • 如果删除的是公共同义词,则当前用户需要具备以下权限:

        • MySQL 租户:CREATE SYNONYM 权限

        • Oracle 租户:DROP PUBLIC SYNONYM 权限

        同时,在删除时,必须指定 PUBLIC 关键字,并且不能指定数据库或 Schema。

      删除同义词的语法格式如下:

      • MySQL 模式

        MySQL 模式下 DROP SYNONYM 语句的更多信息,请参见《SQL 参考(MySQL 模式)》文档中的 DROP SYNONYM 章节。

      • Oracle 模式

        1. DROP [PUBLIC] SYNONYM [ schema. ]synonym;

        Oracle 模式下 DROP SYNONYM 语句的更多信息,请参见《SQL 参考(Oracle 模式)》文档中的 章节。

      示例:

      • 删除一个私有同义词。

        1. Query OK, 0 rows affected (0.02 sec)