小编Har*_*ota的帖子

在表中添加一个带有序列的新列 - Oracle

我有一个包含6000万行数据的表.我想为表格引入一个新的列说"id",这是一个自动递增的序列.

例如:

CREATE TABLE Persons (
    LastName varchar(255),
    FirstName varchar(255)
);

INSERT INTO Persons VALUES ('abc', 'def');
INSERT INTO Persons VALUES ('abcd', 'ghi');

CREATE SEQUENCE "PERSON_SEQUENCE" START WITH 1 INCREMENT BY 1;

ALTER TABLE PERSONS ADD (PERSONID NUMBER);

UPDATE persons SET personid = PERSON_SEQUENCE.NEXTVAL;
Run Code Online (Sandbox Code Playgroud)

在上面的sql语句中,我能够创建一个序列然后更改表并更新它.

由于我需要更新的数据量很大..我希望以尽可能低的成本执行此操作.

我想这样做:

ALTER TABLE PERSONS ADD (PERSONID NUMBER DEFAULT(PERSON_SEQUENCE.NEXTVAL));
Run Code Online (Sandbox Code Playgroud)

但以上不起作用.Oracle向我抛出以下错误:

从第1行开始出错:在命令中输入1 - ALTER TABLE PERSONS ADD(PERSONID NUMBER DEFAULT(PERSON_SEQUENCE.NEXTVAL))错误报告 - ORA-00984:此处不允许使用00984. 00000 - "此处不允许列"*原因:
*操作:

但是这有效:

ALTER TABLE PERSONS ADD (PERSONID NUMBER DEFAULT(0));
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我如何实现更改表(创建新列)并在单个sql中使用seq id填充列.谢谢!

sql oracle sequence alter oracle11g

2
推荐指数
1
解决办法
1491
查看次数

标签 统计

alter ×1

oracle ×1

oracle11g ×1

sequence ×1

sql ×1