我正在尝试在现有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"
我该怎么解决这个问题?
答案 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);