Oracle同义词选择

时间:2008-11-07 12:44:06

标签: oracle synonym

进入一种情况,在模式中我有一个表,比如表ACTION,而我有一个名为ACTION的同义词,它将另一个表引用到另一个模式。

现在,当我运行查询

从ACTION中选择*

它将从表格​​中选择记录,但不会选择同义词。

无论如何我可以从同义词和表中一起选择吗?

感谢名单

3 个答案:

答案 0 :(得分:5)

我认为您的ACTION同义词与ACTION表位于同一模式中,因为Oracle中不允许这样做。很可能你的ACTION同义词存在于其他模式中,也许它是PUBLIC的同义词。如果是这种情况,您可以使用

select * from ACTION
union 
select * from public.ACTION

答案 1 :(得分:4)

好吧,你的基础ACTION表应该被重命名,比如做LOCAL_ACTION。

让我们假装您的ACTION同义词在otheruser.LOCAL_ACTION表上...

然后您可以将ACTION同义词重新定义为:

SELECT * from LOCAL_ACTION
UNION
SELECT * from otheruser.LOCAL_ACTION

然后最后,从ACTION中选择*将为您提供两个表的组合列表。

答案 2 :(得分:1)

表和私有同义词确实共享相同的名称空间,因此这是一个公共同义词:http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htm#sthref723

请注意,UNION是结果集中的隐式不同。你需要的是UNION ALL。

select * from ACTION
union all
select * from public.ACTION