现在我已经了解了Oracle中模式对象的概念及其在匹配表名时的顺序。
对于用户XYZ发出的sql查询并访问FOO_TABLE,优先顺序是检查
查看XML中视图的以下数据:
<ROW>
<OWNER>XYZ</OWNER>
<VIEW_NAME>BAR_VIEW</VIEW_NAME>
<TEXT_LENGTH>...</TEXT_LENGTH>
<TEXT>
SELECT *
FROM SOME_NAME
</TEXT>
<EDITIONING_VIEW>N</EDITIONING_VIEW>
<READ_ONLY>N</READ_ONLY>
</ROW>
如果我想找到SOME_TABLE的所有者,我可以开始查看以下订单吗?
最佳, 将
答案 0 :(得分:2)
你的陈述实际上可以在某种程度上简化为:
此规则适用于所有数据库对象(表,包等)。本地同义词步骤不是必需的,因为1)它是本地对象,2)Oracle不允许本地对象之间的名称冲突(即,您不能在一个具有相同名称的模式中具有同义词和表)。
这里唯一的限定符是,如果视图定义包含模式(SELECT * FROM SOME_SCHEMA.SOME_TABLE
)或数据库链接(SELECT * FROM SOME_TABLE@SOME_DB_LINK
),则名称解析是从指示的模式完成的(如果是DB链接,来自DB链接定义中指示的模式。