DB2(v10.5.0.5)如何将自动增量列添加到现有表

时间:2019-01-02 06:31:47

标签: sql db2

我正在尝试在现有DB2表中添加自动递增列。

DB2版本为v10.5.0.5

以下是我的查询:

alter table DB2INST1.AAA_BJ_BOND 
ADD COLUMN id INTEGER NOT NULL DEFAULT 0;

ALTER TABLE DB2INST1.AAA_BJ_BOND ALTER COLUMN id 
set generated always as identity (start with 1);

但出现以下错误:

"com.ibm.db2.jcc.am.SqlSyntaxErrorException: ALTER TABLE "DB2INST1.AAA_BJ_BOND" 
specified attributes for column "ID" that are not compatible with the existing 
column.. SQLCODE=-190, SQLSTATE=42837, DRIVER=4.13.127"

我该怎么解决这个问题?

2 个答案:

答案 0 :(得分:1)

您必须首先删除列DEFAULT值。 SQL0190N的描述中提到了这一点:

  

如果指定了SET GENERATED ALWAYS AS(表达式),但是该列   已使用生成形式定义(默认,身份或   表达式),并且同一条语句中没有相应的DROP。

ALTER TABLE DB2INST1.AAA_BJ_BOND 
ALTER COLUMN id drop default;

ALTER TABLE DB2INST1.AAA_BJ_BOND ALTER COLUMN id 
set generated always as identity (start with 1);

答案 1 :(得分:0)

现在,我已通过以下三个步骤将自动递增的ID成功添加到表中:

ALTER TABLE DB2INST1.AAA_SEAT ADD COLUMN ID INTEGER NOT NULL DEFAULT 0;

ALTER TABLE DB2INST1.AAA_SEAT ALTER COLUMN ID DROP DEFAULT;

ALTER TABLE DB2INST1.AAA_SEAT ALTER COLUMN ID SET GENERATED ALWAYS AS IDENTITY (START WITH 1);