不同模式下Oracle中相同的表名?

7
在同一个数据库中的不同模式下拥有相同表名但表中数据不同是可能的吗?我认为,与其创建多个包含相同表名的数据库,我应该创建多个模式。
例如:
模式1: 表A,表B 模式2: 表B,表X
注意:每个模式下的表B保存不同的数据。
最基本的问题是,每个模式(用户)都持有不同的表集吗?在SQL Server和MySQL中,同一数据库中的每个用户都具有相同的表集,区别仅在于角色。那么Oracle呢?
谢谢
2个回答

9

是的,这是可能的。在Oracle中,模式是MySQL用户称为数据库的东西。

但是,如果连接到数据库实例的用户可以访问这两个表中的任何一个,请小心访问任何一个表。为了明确地引用特定模式中的表,请使用schema.table


好的,谢谢。每个模式的表空间(默认和临时)需要位于不同的文件中吗? - Dels
没有问题,可以给用户分配相同的默认和临时表空间。 - Rob van Laarhoven

6
这里是命名空间的文档:https://docs.oracle.com/en/database/oracle/oracle-database/20/sqlrf/Database-Object-Names-and-Qualifiers.html#GUID-3C59E44A-5140-4BCA-B9E1-3039C8050C49 正如jackrabbit所说,不同模式中的对象具有不同的命名空间。
每个数据库模式都有其自己的对象命名空间。这意味着,例如,不同模式中的两个表位于不同的命名空间中,可以使用相同的名称。
在一个模式内部,情况会稍微复杂一些。
因为表和视图位于同一个命名空间中,因此同一模式中的表和视图不能具有相同的名称。但是,表和索引位于不同的命名空间中。因此,同一模式中的表和索引可以使用相同的名称。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接