[英]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
在哪里
GENERATED
和AS IDENTITY
[ ALWAYS | BY DEFAULT [ ON NULL ] ]
[ ALWAYS | BY DEFAULT [ ON NULL ] ]
。 如果在这种情况下使用ALWAYS
选项,则始终会生成标识列的值。 尝试将值插入标识列将导致错误。START WITH
和INCREMENT BY
选项。 因为那些已经默认为1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.