目录
您可以执行创建同义词、使用同义词和删除同义词等任务。
可以为表、视图、存储过程,序列等数据库对象建立同义词,也可以为同义词再次建立同义词,甚至可以为一个不存在的对象建立同义词。
使用CREATE SYNONYM语句创建同义词。
在DML语句中,同义词的使用方式和基对象的使用方式完全相同。
您可以通过DROP SYNONYM语句来删除一个不再需要的同义词。
父主题: 管理视图、序列和同义词
15.3.1. 关于同义词
可以为表、视图、存储过程,序列等数据库对象建立同义词,也可以为同义词再次建立同义词,甚至可以为一个不存在的对象建立同义词。
同义词本身并不包含原对象中的数据或者代码,它仅仅充当一个指针,是数据库对象的别名。此外,同义词易于使用,并能降低了数据库用户SQL语句的复杂性。同义词允许底层对象被重命名或移动,但必须重定义同义词,基于同义词的应用程序无需修改即可继续工作。您可以创建公共和私有的同义词。
公共同义词由名为PUBLIC的特殊用户组拥有,一般由DBA创建,数据库中的每个用户都可以访问它。私有同义词包含在特定用户的模式中(非public模式),仅对该用户和底层对象的被授予者可用。同义词本身不涉及安全,当您赋予一个同义词对象权限时,您实质上是在给同义词的基对象赋予权限。
父主题: 管理同义词
15.3.2. 创建同义词
使用CREATE SYNONYM语句创建同义词。
创建同义词时,底层模式对象不需要存在,也不需要访问对象的权限,也能创建同义词。下面的语句在包含在schm模式中的tab1表上创建一个名为public_syn_tab1的公共同义词:
CREATE PUBLIC SYNONYM public_syn_tab1 FOR schm.tab1;
您也可以使用带有OR REPLACE子句的CREATE SYNONYM将一个现有同义词定义替换掉:
CREATE OR REPLACE PUBLIC SYNONYM public_syn_tab1 FOR schm.tab1;
在创建同义词应注意的是:
-
同义词不能喝同一模式中其他同义词同名,但不同模式下可以有同名的同义词
-
创建公有同义词不能指定模式
-
创建私有同义词不能指定public模式
-
创建私有同义词必须指定模式(在当前模式路径为public时)
父主题: 管理同义词
15.3.3. 在DML语句中使用同义词
在DML语句中,同义词的使用方式和基对象的使用方式完全相同。
只要您被赋予了基对象权限,您就可以使用其他用户的私有同义词。例如,您只拥有student表的SELECT权限,student表有一个同义词stu,这时,您就只能对stu同义词进行查询操作,而不能使用它进行插入数据。同理,如果拥有基对象的插入权限,则可以使用其同义词进行插入操作。
例如,一个名称为student的同义词,下面语句是有效的:
INSERT INTO stu VALUES (stu_sequence.CURRVAL, '刘恩斯',18,'高中二年级',4,'108@qq.com',SYSDATE);
父主题: 管理同义词
15.3.4. 删除同义词
您可以通过DROP SYNONYM语句来删除一个不再需要的同义词。
如果您要删除公共同义词,您必须拥有DROP PUBLIC SYNONYM系统权限。当删除私有同义词时,省略PUBLIC关键字;当删除公共同义词时,需要包含PUBLIC关键字。
例如,下面语句删除名为syn_test的同义词:
DROP SYNONYM syn_test;
下面的语句删除名为public_syn的公共同义词:
DROP PUBLIC SYNONYM public_syn;
父主题: 管理同义词