繁体   English   中英

Oracle SQL - 创建序列并在新列上添加序列值

[英]Oracle SQL - Create Sequence and add sequence values on new column

我有下表称为 table_1

在此处输入图像描述

我创建了一个新的 column_3

在此处输入图像描述

然后我创建一个序列

CREATE SEQUENCE "sequence_1" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE NOPARTITION

我更改了 table_1,因此 column_3 上的新值的默认值是序列的值。

ALTER TABLE table_1 MODIFY column_3 DEFAULT sequence_1.NEXTVAL

如何用此序列中的值替换 column_3 上现有的 null 值? 最终结果应该是:

在此处输入图像描述

我想出的解决方案如下 - 很高兴接受更好的答案:

ALTER TABLE table_1 ADD column_3 NUMBER(38,0) DEFAULT sequence_1.NEXTVAL NOT NULL

如果您的数据库版本是12c+ ,那么添加一个标识列将处理所需的内容,例如

ALTER TABLE table_1 ADD new_id INT GENERATED ALWAYS AS IDENTITY

在哪里

  • 必须使用GENERATEDAS IDENTITY
  • 有以下三个选项[ ALWAYS | BY DEFAULT [ ON NULL ] ] [ ALWAYS | BY DEFAULT [ ON NULL ] ] 如果在这种情况下使用ALWAYS选项,则始终会生成标识列的值。 尝试将值插入标识列将导致错误。
  • 对于当前情况,无需使用START WITHINCREMENT BY选项。 因为那些已经默认为1

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM