【问题标题】:Oracle synonyms selectionOracle 同义词选择
【发布时间】:2010-09-21 06:42:48
【问题描述】:

遇到这样一种情况,在架构中我有一个表,比如表 ACTION ,而我也有一个名为 ACTION 的同义词,它将另一个表引用到另一个架构。

现在,当我运行查询时

从动作中选择 *

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

无论如何让我从同义词和表格中同时选择?

感谢

【问题讨论】:

    标签: oracle synonym


    【解决方案1】:

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

    select * from ACTION
    union 
    select * from public.ACTION
    

    【讨论】:

      【解决方案2】:

      好吧,你的底层 ACTION 表应该被重命名,比方说做 LOCAL_ACTION。

      让我们假设您的 ACTION 同义词在 otheruser.LOCAL_ACTION 表中...

      那么你可以将ACTION同义词重新定义为:

      SELECT * from LOCAL_ACTION
      UNION
      SELECT * from otheruser.LOCAL_ACTION
      

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

      【讨论】:

        【解决方案3】:

        表和私有同义词确实共享相同的名称空间,所以这是一个公共同义词: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
        

        【讨论】:

          猜你喜欢
          • 2011-10-06
          • 2021-09-17
          • 2011-05-01
          • 2011-10-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多