关闭。这个问题是opinion-based .它目前不接受答案。
想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.
8年前关闭。
Improve this question
有人能解释为什么oracle不支持主键的自动增量功能吗?
我知道在序列和触发器的帮助下可以实现相同的功能,但是为什么 oracle 没有引入 autoincrement 关键字来在内部创建序列和触发器。我敢打赌,oracle 的人肯定会考虑过这个问题。不提供这个功能肯定是有原因的。有什么想法吗?
最佳答案
它可能只是术语。
'AUTOINCREMENT' 意味着记录 '103' 将在记录 '102' 和 '104' 之间创建。在集群环境中,序列不一定是这种情况。一个节点可能会插入“100”、“101”、“102”,而另一个节点正在插入“110”、“111”、“112”,因此记录“乱序”。 [当然,术语“序列”具有相同的含义。]
如果您选择不遵循序列模型,则会引入锁定和序列化问题。在确定下一个值是什么之前,您是否强制插入等待另一个插入的提交/回滚,或者您是否接受,如果事务回滚,您会在键中出现间隙。
然后,如果有人想将具有该字段的特定值的行插入到表中(即它是否被允许,或者它是否像 DEFAULT 一样工作)或者如果有人试图更新它,那么你会怎么做。如果有人插入“101”,自动增量会“跳转”到“102”,还是冒着尝试重复值的风险。
它可能会对它们的 IMP 实用程序和直接路径写入以及向后兼容性产生影响。
我并不是说它不能完成。但我怀疑最终有人看过它并决定他们可以在其他地方更好地花费开发时间。
编辑添加:
在 Oracle 12.1 中,添加了对 IDENTITY 列的支持。
“将为每个后续 INSERT 语句从序列生成器中为标识列分配一个递增或递减的整数值。您可以使用 identity_options 子句来配置序列生成器。”
https://docs.oracle.com/database/121/SQLRF/statements_7002.htm#CJAHJHJC
关于oracle - 为什么oracle没有主键的自增功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1204372/