遇到一种情况,在模式中我有一个表,比如表 ACTION ,而我也有一个名为 ACTION 的同义词,它将另一个表引用到另一个模式。
现在,当我运行查询
从动作中选择 *
它将从表中选择记录,但不选择同义词。
无论如何让我从同义词和表格中同时选择?
谢谢
我不认为您的 ACTION 同义词与您的 ACTION 表位于相同的架构中,因为这在 Oracle 中是不允许的。您的 ACTION 同义词很可能存在于其他模式中,也许它是一个 PUBLIC 同义词。如果是这种情况,您可以使用
select * from ACTION
union
select * from public.ACTION
好吧,你的底层 ACTION 表应该被重命名,比方说做 LOCAL_ACTION。
假设您的 ACTION 同义词在 otheruser.LOCAL_ACTION 表上...
然后您可以将 ACTION 同义词重新定义为:
SELECT * from LOCAL_ACTION
UNION
SELECT * from otheruser.LOCAL_ACTION
然后最后, select * from ACTION 将为您提供两个表的组合列表。
表和私有同义词确实共享相同的名称空间,所以这是一个公共同义词: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