所以我在两个不同的模式中有两个相似的表,例如。 schema1.TableA 和 schema2.TableA。 在我的应用程序中,还有另外两个模式可以选择访问这两个表。 是否可以创建一个视图,当当前架构为 Schema3 时,该视图应从 schema1.TableA 返回数据,而当当前架构为 Schema4 时,该视图应从 schema2.TableA 返回数据? 或者oracle中有没有其他方法可以实现这一点?
向适当的用户授予从架构中进行选择的权限,然后为每个用户创建同义词:
GRANT SELECT ON SCHEMA1.TABLEA TO SCHEMA3;
GRANT SELECT ON SCHEMA2.TABLEA TO SCHEMA4;
CREATE SYNONYM schema3.tableA FOR SCHEMA1.tableA;
CREATE SYNONYM schema4.tableA FOR SCHEMA2.tableA;
然后您应该能够将
SELECT * FROM tableA
用作 schema3
和 schema4
,它将从每个模式中适当的表/视图中获取数据。