为什么 Oracle 不支持自动编号数据类型?

Och*_*ado 2 oracle auto-increment

我知道 Oracle 使用序列和触发器实现自动编号功能,但为什么它不像大多数关系 DBMS 那样具有内置的自动编号数据类型?我的问题有两个具体部分:

  • 我知道带有触发器的序列通常比其他 DBMS 中提供的自动编号字段更灵活。但是,Oracle 的实现有哪些特别优越的特性?
  • 考虑到主键属性的自动编号是一个如此普遍的用例,实施它会阻止 Oracle 添加此类内置功能的缺点是什么?毕竟,他们仍然可以保留序列和触发器以及他们可能提供的任何附加功能。

我知道这个问题可能很难,因为它不是一个“如何做”的问题,而是一个询问 Oracle 为其 DBMS 设计决策背后的背景的问题。不过,我觉得理解甲骨文在这件事上的想法还有很多需要学习的地方。

小智 8

现在好了 - Oracle 12c 引入了IDENTITY列,请参阅:

Oracle Database 12c 第 1 版 (12.1) 中的标识列

例如

CREATE TABLE identity_test_tab (
   id          NUMBER GENERATED ALWAYS AS IDENTITY,
   description VARCHAR2(30)
);
Run Code Online (Sandbox Code Playgroud)

  • 序列自第 6 版以来就已存在!见 http://www.orafaq.com/wiki/Sequence (5认同)
  • 从版本 (10 ?) (2认同)