首页 文章

查看多个用户架构中的表

提问于
浏览
0

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

2 回答

  • 1

    “创建视图时,表名变得模糊,因为用户可以访问不同模式中的相同表”

    它对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_3中使用不同的TABLE_A .

  • 2

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

    schemaname.tablename
    

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

相关问题