要修改的列不是标识列
Column to be modified is not an identity column
我创建了一个 table 列 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
您收到此错误仅仅是因为目前不支持将现有列修改为 IDENTITY 列。
解决方案是添加一个新列,然后删除现有列(确保您也处理好数据)。
因为不支持修改现有列来标识列。所以你可以使用下面的查询来添加新列。
ALTER TABLE students ADD (S_ROLL_NEW NUMBER(3) GENERATED ALWAYS AS IDENTITY);
如果您不想创建新列的替代解决方案:
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;
我创建了一个 table 列 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
您收到此错误仅仅是因为目前不支持将现有列修改为 IDENTITY 列。
解决方案是添加一个新列,然后删除现有列(确保您也处理好数据)。
因为不支持修改现有列来标识列。所以你可以使用下面的查询来添加新列。
ALTER TABLE students ADD (S_ROLL_NEW NUMBER(3) GENERATED ALWAYS AS IDENTITY);
如果您不想创建新列的替代解决方案:
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;