【问题标题】:Oracle same table name on different schema?不同架构上的Oracle相同表名?
【发布时间】:2010-12-13 17:37:40
【问题描述】:

是否可以在不同架构上具有相同的表名,而在一个数据库中的表上具有不同的数据?我认为与其创建多个数据库(拥有相同的表名),不如创建多个架构。

类似:

模式 1: 表 A,表 B 模式 2: 表 B,表 X PS:表B为每个模式保存不同的数据

最基本的问题是每个模式(用户)都持有不同的表集吗?在 SQL Server 和 MySQL 中,同一数据库上的每个用户都有相同的表集,区别仅在于角色,Oracle 呢?

谢谢

【问题讨论】:

    标签: database oracle schema


    【解决方案1】:

    这是关于命名空间的文档:https://docs.oracle.com/en/database/oracle/oracle-database/20/sqlrf/Database-Object-Names-and-Qualifiers.html#GUID-3C59E44A-5140-4BCA-B9E1-3039C8050C49

    正如jackrabbit所说,不同架构中的对象具有不同的命名空间。

    数据库中的每个模式都有其包含的对象的自己的命名空间。这意味着,例如,不同架构中的两个表位于不同的命名空间中并且可以具有相同的名称。

    在架构中,事情会稍微复杂一些。

    因为表和视图在同一个命名空间中,所以同一个模式中的表和视图不能具有相同的名称。但是,表和索引位于不同的命名空间中。因此,同一架构中的表和索引可以具有相同的名称。

    【讨论】:

      【解决方案2】:

      是的,这是可能的。 Oracle 中的模式就是 MySQL 用户所称的数据库。

      但是,如果您连接到数据库实例的用户可以访问这两个表,那么您现在访问其中一个表时需要小心。要明确引用特定架构中的表,请使用schema.table

      【讨论】:

      • 好的,谢谢,每个模式的表空间(默认和临时)是否需要在不同的文件中?
      • 为用户提供相同的默认和临时表空间完全没有问题
      猜你喜欢
      • 2014-07-16
      • 1970-01-01
      • 1970-01-01
      • 2015-02-20
      • 2019-07-05
      • 2021-05-08
      • 1970-01-01
      • 1970-01-01
      • 2019-09-18
      相关资源
      最近更新 更多