删除同义词
删除同义词命令可用于删除同义词。
请记住在删除公共同义词时使用 PUBLIC 子句。
1.删除公共同义词
SQL> DROP PUBLIC SYNONYM emp;
2.删除私有同义词
SQL> DROP SYNONYM emp;
为什么我们需要同义词?
- 同义词使对象的引用更容易。
如上例所示,远程数据库上的 scott.emp@dblink 之类的对象可以使用同义词在本地数据库上作为 emp 引用。
2.它消除了硬编码。
例如,如果表 emp 从 scott 模式移动到 hrm 模式,并且 PL/SQL 代码在代码中多次使用硬编码表名 scott.emp。
这给程序员在 PL/SQL 代码中替换表的多个引用带来了问题。
但是,通过在 PL/SQL 代码中使用同义词,我们只需更新同义词即可使代码再次合法。
因此节点代码发生了变化。
- 它还隐藏了对象的详细信息,如对象名称、所有者、数据库链接。
同义词(synonyms)字面意思是引用数据库对象的别名。
默认情况下,当我们在数据库中查找对象时,它会尝试在我们自己的架构中搜索它。
因此,如果我们是 user01 用户并且我们尝试从 scott 的模式中查询对象 emp,oracle 将返回错误:
sql> select * from emp select * from emp * ERROR at line 1: ORA-00942: table or view does not exist
https://onitroad.com 更多教程
优先顺序
当我们拥有同名的公共、私有和本地数据库对象时,了解优先顺序非常重要。
是的,我们可以在同一个数据库中使用相同的名称。
因此,在这种情况下的优先顺序是:
- 本地对象
- 私有同义词
- 公共同义词
同义词类型
同义词有两种基本类别:
- 公共同义词
- 私有同义词
Public synonym | Private synonym |
---|---|
任何数据库用户都可以访问。 创建公共同义词的个人用户不拥有它。 相反,它属于 PUBLIC 用户组。 | 创建同义词的数据库用户拥有它,因此是唯一可以访问它的人 |
与同义词相关的数据库视图
dba_synonyms 和 user_synonyms 等动态视图可用于查询同义词的详细信息。
SQL> SELECT synonym_name, table_owner, table_name FROM DBA_SYNONYMS where table_name='EMP'; SYNONYM_NAME TABLE_OWNER TABLE_NAME ------------------------------ ------------------------------ ----------------------------- EMP SCOTT EMP
语法
创建私有同义词的语法是:
sql> CREATE SYNONYM synonym_name FOR object_name;
创建公共同义词的语法是:
sql> CREATE PUBLIC SYNONYM synonym_name FOR object_name;
示例:私有同义词
sql> conn scott/tiger sql> CREATE SYNONYM emp FOR emp;
示例:公共同义词
sql> conn hrm/password sql> CREATE SYNONYM emp FOR scott.emp;
日期:2020-09-17 00:11:32 来源:oir作者:oir