更改主键不起作用的列

时间:2015-02-05 07:02:18

标签: sql db2 alter-table

我创建了一个新表,没有自动增加主键和插入的预定义数据集到表中。现在我需要设置主键的自动增量,这是我无法设置的。请在下面的查询中提出我所犯的错误。

ALTER TABLE SYNCBASE.AUTO_LOAD_DATASOURCES
ALTER COLUMN ID BIGINT NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 62, INCREMENT BY 1)

直到已插入记录的61行,它必须从62开始增加。但我得到错误

Error: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=BIGINT;RCES
ALTER COLUMN ID;SET, DRIVER=3.53.95
SQLState:  42601
ErrorCode: -104

提前致谢

3 个答案:

答案 0 :(得分:0)

问题可能来自于您已在数据库中拥有数据并且修改主键会违反数据完整性的事实。或者,您可以检查DBMS是否允许您在创建表后对其进行更改。

答案 1 :(得分:0)

首先......我们需要删除标识,然后更改列,只有它才有效。

alter table SYNCBASE.AUTO_LOAD_DATASOURCES alter column ID drop identity;
alter table SYNCBASE.AUTO_LOAD_DATASOURCES alter column ID set generated always as identity (start with 62, INCREMENT BY 1); 

答案 2 :(得分:0)

DDL语句中存在语法错误。列定义不需要重复。该声明将起作用:

ALTER TABLE SYNCBASE.AUTO_LOAD_DATASOURCES
    ALTER COLUMN ID SET GENERATED ALWAYS AS IDENTITY (START WITH 62);