要修改的列不是标识列

时间:2016-01-24 06:20:03

标签: oracle identity-column

我创建了一个包含列S_ROLL NUMBER(3) NOT NULL的表现在我想将此列作为标识列。 我用了这个命令

alter table students
modify
(
S_ROLL NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY
);

然后我收到了这个错误。

S_ROLL NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY
*
ERROR at line 4:
ORA-30673: column to be modified is not an identity column

3 个答案:

答案 0 :(得分:15)

您收到此错误只是因为现在不支持将现有列修改为IDENTITY列。

答案 1 :(得分:0)

不支持将现有列修改为标识列。因此,您可以使用以下查询添加新列。

ALTER TABLE students ADD (S_ROLL_NEW NUMBER(3) GENERATED ALWAYS AS IDENTITY);

答案 2 :(得分:0)

如果您不想创建新列的替代解决方案:

CREATE SEQUENCE s_roll_seq
     START WITH 1 -- here last id + 1
   INCREMENT BY 1;

ALTER TABLE students
    MODIFY S_ROLL NUMBER DEFAULT s_roll_seq.NEXTVAL;