【问题标题】:Oracle 12c auto incrementOracle 12c 自动增量
【发布时间】:2019-01-29 02:44:41
【问题描述】:

所以我有下表:

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;

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

【问题讨论】:

  • 同样,您所展示的内容在 12cR1 和 12cR2 中都有效。你有什么问题?
  • 上述陈述有效。但是当我尝试插入新行时,我得到:ORA-01400: cannot insert NULL into ("car"."id_internal").
  • Insert 也适用于我,只为额外的列提供一个值 - 不适用于 idid_internal。你在哪个版本和补丁级别?我想这在基础 12cR1 版本中存在问题是可行的......
  • 好的,我相信这是休眠问题,因为当我按照您所说的进行操作时——只为额外的列提供值——它起作用了。所以我必须处理hibernate来解决它。再次感谢。

标签: oracle oracle12c


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-01
    • 2014-05-08
    • 1970-01-01
    • 2011-09-01
    • 2014-03-18
    • 2011-09-07
    • 2015-12-30
    • 2013-05-26
    相关资源
    最近更新 更多