【发布时间】:2017-05-22 18:43:52
【问题描述】:
我在 Oracle 中有 3 个架构:
- 让我们假设 A 和 B 有一个同名的表:-比如说表 X
- 我已从两个表中授予表 X 上模式 C 的选择权限。
- 现在,如果我在模式 C 中写入 select * from X。
它将使用哪个表从 X 模式 A 或模式 B 中进行选择???
【问题讨论】:
-
或者......如果你还没有做任何其他事情,也没有。当你尝试时会发生什么?您是否在查询的会话中创建了任何同义词,或更改了 C 的当前架构?
-
为什么不在 SELECT 中使用显式模式名称,例如 A.X?
-
如果您处于这种可能会混淆的情况,那么只需使用您感兴趣的模式名称来限定表名。
-
是的,但是代码已经写成 select * from X;在 prod 中,它自动采用了其中一个模式。直到那时我才意识到它采用了错误的模式。我将更改代码并将其用作 select * from A.X 或 select from B.X 根据需要。但我将其发布到只需知道是否有人知道 Oracle 是如何找到它的……………………………………………………………… ....基本上这是与架构相关的问题,而不是与编码相关的问题。
-
那么您可能已经有一个同义词(C 的私有或公共)指向其中一个;或者您当前的架构可能正在自动更改。
标签: oracle