【问题标题】:What happens with Oracle Table with no primary key没有主键的 Oracle 表会发生什么
【发布时间】:2021-02-07 07:17:35
【问题描述】:

在 MySql 中,如果没有为表定义主键,MySQL 会为其关联一个默认的聚集索引,该索引的功能类似于主键。 Oracle表没有主键是什么情况?

【问题讨论】:

标签: mysql oracle


【解决方案1】:

MySQL(或者更确切地说是存储引擎 innodb)不像 Oracle 通常那样存储数据。

  • 在 MySQL (innodb) 中,数据始终存储在所谓的“聚集索引”中。即使它被称为索引,所有数据都存储在那里,而不仅仅是索引列。数据按索引列的顺序存储。如果没有适当的主键或唯一键,则使用合成键。
  • 在 Oracle 数据库中,默认情况下,表存储为 ,这意味着行不按任何特定顺序存储。堆表可以在没有任何类型索引的情况下存在。
  • Oracle 允许我们定义索引组织表,它们的工作方式类似于 MySQL 表,但它们必须有一个主键。

所以底线是,如果没有主键(或非空唯一键),唯一标识 Oracle 堆表中的行的唯一方法是 ROWID 伪列。但是,ROWID 上的索引是不允许的。

【讨论】:

    【解决方案2】:

    在 Oracle 中,没有主键的表不会发生任何事情。没有自动创建键或索引。

    【讨论】:

      猜你喜欢
      • 2010-11-07
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多