Oracle IDENTITY 列与 PRIMARY KEY

Oracle IDENTITY column versus PRIMARY KEY

无法确定是否需要在 Oracle 12.2c 中将 IDENTITY 列指定为 PRIMARY KEYIDENTITY 列会像 PK 一样自动创建索引吗?只是冗余吗?我相信你可以有一个 IDENTITY 专栏和单独的 PK,尽管我们没有这样做。

ID NUMBER AS IDENTITY PRIMARY KEY == ID NUMBER AS IDENTITY ?

IDENTITY 列可以而且经常用作主键,但并非必须如此。

标识列对于代理主键列非常有用。当您向标识列中插入一个新行时,Oracle 会自动生成一个顺序值并将其插入到该列中。

https://www.oracletutorial.com/oracle-basics/oracle-identity-column/

混合逻辑和物理数据组织是一个常见的错误。

您成功混合了 3 个正交概念:

  • 逻辑:PRIMARY KEY约束
  • 物理:INDEX
  • 自动生成值:IDENTITY

Does an IDENTITY column automatically create an index, like a PK? Is it just being redudant?

这些问题非常依赖于版本。 IDENTITY 本身是在 Oracle 12.x.

中引入的

I do believe you can have an IDENTITY column and separate PK, though we are not doing that.

你是对的。

自动值生成、逻辑约束和物理数据组织相互正交。

Does an IDENTITY column automatically create an index, like a PK?

没有。标识列只是用顺序生成的数字自动填充的列。您可以随意使用它,但典型用途是作为合成主键。

Is it just being redundant?

没有

I do believe you can have an IDENTITY column and separate PK

是的,你可以。

though we are not doing that.

好吧,如果你的意思是除了标识列之外你没有单独的 PK 。在标识列上定义 PK 约束 是个好主意。