查看多个用户架构中的表

时间:2010-01-13 19:23:26

标签: oracle view database-schema

我有一个基于不同用户架构的多个表构建的视图。凭借当前登录的用户,他能够从不同的模式中查看该表。创建视图时,表名变得不明确,因为用户可以从不同的模式访问相同的表。 是否有任何方法可以指定在创建视图时使用当前用户架构中的表? 我们可以从视图定义中为其中一个表执行此操作,而可以从任何模式中选择其他表吗?

2 个答案:

答案 0 :(得分:2)

  

“创建视图表时   名称变得与用户不明确   可以访问相同的表   不同的架构“

对Oracle来说并不含糊。

视图存在于模式SCHEMA_1中。如果该视图引用对象TABLE_A,Oracle将首先在SCHEMA_1中查找对象TABLE_A。如果找到一个表,它将使用它。如果找到SYNONYM,它将使用同义词指向的任何内容。如果SCHEMA_1中没有任何内容,它将查找TABLE_A的PUBLIC SYNONYM并使用指向的内容。

SYNONYMS可以指向其他同义词,视图或表格。

您可以查询USER_DEPENDENCIES以查看视图实际所基于的对象。

如果从SCHEMA_2查询,则在SCHEMA_1中无法使用SCHEMA_2中的TABLE_A,但如果从SCHEMA_3查询,则在SCHEMA_2中使用不同的TABLE_A。

答案 1 :(得分:1)

您应该能够通过为模式名称添加前缀来访问模式(具有正确的权限)。

schemaname.tablename

希望我能正确理解你的问题。