进入一种情况,在模式中我有一个表,比如表ACTION,而我有一个名为ACTION的同义词,它将另一个表引用到另一个模式。
现在,当我运行查询
时从ACTION中选择*
它将从表格中选择记录,但不会选择同义词。
无论如何我可以从同义词和表中一起选择吗?
感谢名单
答案 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