问题描述
嗨,汤姆
我目前正在使用oracle中的同义词,并发现以下事实:
SQL> 为myschema.mytable创建公共同义词mysynonym;
创建同义词。
SQL> create table myschema.mytable(a int);
第1行的错误:
ORA-00955: 名称已被现有对象使用
根据这里描述的Oracle的doc,这是相当合理的:
https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_7001.htm
是的,这是相当合理的,预计。但是我发现 “副范思哲” 在这里并不成立:
SQL> create table myschema.mytable(a int);
创建的表。//先建表
SQL> 为myschema.mytable创建公共同义词mysynonym;
创建同义词。
// 然后创建具有相同表名称的公共同义词。
// 哇,成功。恕我直言,它应该失败了。
你能帮我找出原因吗?
非常感谢。
我目前正在使用oracle中的同义词,并发现以下事实:
SQL> 为myschema.mytable创建公共同义词mysynonym;
创建同义词。
SQL> create table myschema.mytable(a int);
第1行的错误:
ORA-00955: 名称已被现有对象使用
根据这里描述的Oracle的doc,这是相当合理的:
https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_7001.htm
是的,这是相当合理的,预计。但是我发现 “副范思哲” 在这里并不成立:
SQL> create table myschema.mytable(a int);
创建的表。//先建表
SQL> 为myschema.mytable创建公共同义词mysynonym;
创建同义词。
// 然后创建具有相同表名称的公共同义词。
// 哇,成功。恕我直言,它应该失败了。
你能帮我找出原因吗?
非常感谢。
专家解答
我们在数据库中有几个名称空间,它们定义了允许名称重叠的位置,以及不重叠的位置。
因此,只要您在名称空间内具有唯一性,就可以了。公共同义词只是特殊用户 “公共” 拥有的对象,因此
公共的。我的同义词
公共。我的表
我的模式。我的表
都可以共存得很好。
SQL> select distinct namespace, object_type from dba_objects
2 order by 1,2;
NAMESPACE OBJECT_TYPE
---------- -----------------------
1 CHAIN
1 DESTINATION
1 FUNCTION
1 INDEXTYPE
1 JAVA CLASS
1 JOB
1 JOB CLASS
1 LIBRARY
1 OPERATOR
1 PACKAGE
1 PROCEDURE
1 PROGRAM
1 SCHEDULE
1 SCHEDULER GROUP
1 SEQUENCE
1 SYNONYM
1 TABLE
1 TABLE PARTITION
1 TABLE SUBPARTITION
1 TYPE
1 VIEW
1 WINDOW
2 PACKAGE BODY
2 TYPE BODY
3 TRIGGER
4 INDEX
4 INDEX PARTITION
5 CLUSTER
8 LOB
8 LOB PARTITION
9 DIRECTORY
10 QUEUE
13 JAVA SOURCE
14 JAVA RESOURCE
19 MATERIALIZED VIEW
20 DIMENSION
21 CONTEXT
23 RULE SET
24 CONSUMER GROUP
24 RESOURCE PLAN
25 XML SCHEMA
32 JAVA DATA
36 RULE
38 EVALUATION CONTEXT
51 UNDEFINED
52 UNDEFINED
64 EDITION
88 UNDEFINED
92 SQL TRANSLATION PROFILE
93 UNIFIED AUDIT POLICY
DATABASE LINK
51 rows selected.
因此,只要您在名称空间内具有唯一性,就可以了。公共同义词只是特殊用户 “公共” 拥有的对象,因此
公共的。我的同义词
公共。我的表
我的模式。我的表
都可以共存得很好。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




