哪些对象可以重名,重名后调用顺序是怎样的?怎样强制调用某个重名的对象?
哪些对象可以重名,重名后调用顺序是怎样的?表,view,synonym可以重名吗?如果能,比如都叫abc.那么我select * from abc 时调用的是哪一种对象? 如果我要调用某个指定的同名对象,怎么写? 重命名用rename oldname to newname
table,view,synonym都可以的。 hi,renxiao2003
是重名,就是不同类型的对象能不能用同一个名字。调用某一个名字,怎么知道调用的是表,view,还是synonym?如果缺省顺序是先调用synonym,那么我想调用同名的view.怎么弄? OWNER OBJECT_NAME OBJECT_TYPE
PUBLIC UUU_COMMON_OBJECTS SYNONYM
PUBLIC UUU_OBJECTS SYNONYM
UM UUU_COMMON_OBJECTS TABLE
UM UUU_OBJECTS VIEW
以上的对象结构,select * from uuu_objects,则调用的是哪一个,缺省顺序是什么?如果我要调用另一个,是否要写成
UM.uuu_objects的形式? 一般来说在同一个schema下只允许同义词与其它对象同名 同义词本身也不能同名
当我们书写的程序代码中若引用了一个未限定的数据库对象,如表、视图、存储过程等等,数据库会根据一定的顺序去查询是否有被引用的对象。通常情况下,会按如下的顺序进行验证。首先是看看当前用户是否拥有这个对象;其次这个对象名是否是当前用户拥有的一个同义词;最后,才去判断公用同义词的情况。 摘自盖国强的《深入浅出oracle》:
Oracle首先查看在发出命令的用户模式中是否存在表或视图;
如果表或视图不存在,Oracle检查私有同义词是否存在;
如果私有同义词存在,将使用这个同义词所引用的对象;
如果私有同义词不存在,检查同名的公共同义词是否存在;
如果公共同义词存在,将使用这个同义词所引用的对象;
如果公共同义词不存在,Oracle返回消息“ORA_00942 table or view does not exist”。
本帖最后由 blackantt 于 2011-01-17 12:17 编辑
select owner,object_name,object_type from dba_objects where object_name='UT_OBJECTS';
OWNER OBJECT_NAME OBJECT_TYPE
1 PUBLIC UT_OBJECTS SYNONYM
2 UM UT_OBJECTS VIEW
SELECT * from DBA_synonyms where synonym_name='UT_OBJECTS';
OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINK
1 PUBLIC UT_OBJECTS UM UT_OBJECTS
太绕了,这么问吧。所有对象都是其它帐号的,帐号1下有个表objects,帐号2下有个view也叫objects,
帐号3下还有一个私用的同义词叫objects.另外系统中还有一个公用同义词也叫objects,
.如果本帐号下访问objects,请给出系统缺省的访问顺序? 结贴!
thanks for all
的确有67213个public的synonym,我原来所访问的每一个对象都是同义词.现在明白了
页:
[1]