目录
统一SQL介绍
详见:统一SQL参考手册
同义词
描述
同义词 (Synonym)是 Oracle 租户中表、视图、物化视图、序列、存储过程、函数、包、类型、用户自定义类型,或是其他的同义词的别名。由于其只是一个别名,所以除了在数据字典中的定义不占任何空间。
分类
-
同义词有两种类型,Public 同义词和 Private 同义词。
-
Public 同义词属于 PUBLIC 组,每个用户都可以访问。Private 同义词属于对象所有者,只有其显式授权后其他用户才可访问。
-
公有同义词一般由 DBA 创建,普通用户如果希望创建公有同义词,则需要 CREATE PUBLIC SYNONYM 系统权限。
基本特性
同义词扩展了数据库的使用范围,能够在不同的数据库用户之间实现无缝交互。经常用于简化对象访问和提高对象访问的安全性。
oracle官方链接:CREATE SYNONYM、DROP SYNONYM
统一SQL支持
统一SQL24.1.0.0版本开始支持创建和删除同义词的转换。目前支持三个信创数据库的转换
- Oracle2LightDB_Oracle
- Oracle2OceanBase_Oracle
- Oracle2DM
备注:@dblink 暂不支持
LightDB oracle 模式
创建同义词
[ EDITIONABLE | NONEDITIONABLE ]和[ SHARING = { METADATA | NONE } ] 在LightDB-Oracle中将被作为语法糖处理,[ @ dblink ]暂不支持!
- 使用案例
-- 转换前Oracle SQL:
CREATE OR REPLACE EDITIONABLE SYNONYM employee SHARING = METADATA FOR user2.emp;
-- 转换后LightDB-Oracle SQL:
CREATE OR REPLACE SYNONYM employee FOR user2.emp;
删除同义词
[FORCE] 在LightDB-Oracle中将被作为语法糖处理!
- 使用案例
-- 转换前Oracle SQL:
DROP PUBLIC SYNONYM user1.employee FORCE;
-- 转换后LightDB-Oracle SQL:
DROP PUBLIC SYNONYM user1.employee;
OceanBase oracle 模式
创建同义词
[ EDITIONABLE | NONEDITIONABLE ]和[ SHARING = { METADATA | NONE } ] 在OceanBase-Oracle中将被作为语法糖处理,[ @ dblink ]暂不支持!
- 使用案例
-- 转换前Oracle SQL:
CREATE OR REPLACE EDITIONABLE SYNONYM employee SHARING = METADATA FOR user2.emp;
-- 转换后OceanBase-Oracle SQL:
CREATE OR REPLACE SYNONYM employee FOR user2.emp;
删除同义词
- 使用案例
-- 转换前Oracle SQL:
DROP PUBLIC SYNONYM user1.employee FORCE;
-- 转换后OceanBase-Oracle SQL:
DROP PUBLIC SYNONYM user1.employee FORCE;
DM
创建同义词
[ EDITIONABLE | NONEDITIONABLE ]和[ SHARING = { METADATA | NONE } ] 在达梦中将被作为语法糖处理,[ @ dblink ]暂不支持!
- 使用案例
-- 转换前Oracle SQL:
CREATE OR REPLACE EDITIONABLE SYNONYM employee SHARING = METADATA FOR user2.emp;
-- 转换后达梦 SQL:
CREATE OR REPLACE SYNONYM employee FOR user2.emp;
删除同义词
[FORCE] 在达梦中将被作为语法糖处理!
- 使用案例
-- 转换前Oracle SQL:
DROP PUBLIC SYNONYM user1.employee FORCE;
-- 转换后达梦 SQL:
DROP PUBLIC SYNONYM user1.employee;
Oracle到其余信创数据库的转换用法请参考:统一SQL参考手册