oracle - Oracle 将按什么顺序使用同义词、视图和表对象?
问题描述
假设我的数据库有以下对象:
- 模式“B”上名为“mlb_players”的表
- 名为“mlb_players”的模式“C”上的视图,它是针对服务器“DB2”上的表的 SELECT
- 模式“D”上名为“mlb_players”的同义词指向服务器“DB3”上的表
所有这些对象都授予我的模式“RedSoxRule”
如果我执行此查询,将从哪里检索数据?
SELECT *
FROM mlb_players
换句话说,如果给定名称(在本例中为“mlb_players”)适用于不同的对象类型,并且 GRANTS 相等,那么 Oracle 将按什么顺序找到请求的对象?
解决方案
基本上,在解析名称时,它看起来:
- 对于架构中具有该名称的对象
- 对于具有该名称的公共同义词
- 如果名称有多个部分(例如
C.mlb_players
,它会检查第一部分是否是您有权访问的合格模式。
在您的示例中,Oracle 将找不到它们中的任何一个。它们都位于与您的架构不同的RedSoxRule
架构中,它们都不是公共同义词,并且您没有mlb_players
使用架构名称来限定。
对象的类型(表、视图、同义词、包等)实际上并不重要——它们都被同等对待。
推荐阅读
- ios - 如何在 iOS 中下载共享文件夹中的文件并通过其他相关应用访问该目录
- python - Django:使用self.key,其中key是for循环中的一个变量
- jmeter - 如何运行 1 小时的测试并准确地发出 x 数量的请求
- android - 在 Android Studio 中创建自定义组件或对象
- python-3.x - 根据其索引仅将映射应用于某些行
- c# - 如何将 ASP.NET Core MVC 中的存储库模式与 Entity Framework Core 一起使用?
- python - 无法使用 BeautifulSoup 编写 HTML 实体
- html - TypeError: current.play 不是 React 中的函数
- c# - 如何在数据网格中设置取决于数据输入的单元格背景
- excel - 复制某些单元格并将它们粘贴到下一个可用行中