首页 > 解决方案 > Oracle 12c 自动增量

问题描述

所以我有下表:

CREATE TABLE car (
  id                                NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY, 
  (...)
  PRIMARY KEY (ID)
);

然后我添加了一个新列:

CREATE SEQUENCE car_sequence START WITH 1;
ALTER TABLE car ADD id_internal NUMBER DEFAULT car_sequence.nextval NOT NULL;

如何id_internal根据中的下一个值强制(插入时)自动递增car_sequence?触发器是唯一的出路吗?

标签: oracleoracle12c

解决方案


当我尝试插入新行时,我得到:ORA-01400: cannot insert NULL into ("car"."id_internal")

这似乎是错误 18110491,它会影响 12.1.0.1 和 12.1.0.2。它在 2017 年 10 月的 PSU(和 12cR2)中报告为已修复,因此 - 假设您有支持合同,否则您将无法看到错误报告 - 您可以应用它(或以后的一个)。这对我来说在我的 12cR1 系统中运行良好,带有更新的 PSU。


推荐阅读