Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql DB2(v10.5.0.5)如何向现有表添加自动增量列_Sql_Db2 - Fatal编程技术网

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

Sql DB2(v10.5.0.5)如何向现有表添加自动增量列,sql,db2,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

我试图在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"

如何解决此问题?

必须先删除列默认值。 在以下内容的描述中提到了这一点:

如果指定了SET GENERATED ALWAYS AS表达式,则 已使用生成默认值、标识或 表达式,并且在同一语句中没有相应的DROP


必须先删除列默认值。 在以下内容的描述中提到了这一点:

如果指定了SET GENERATED ALWAYS AS表达式,则 已使用生成默认值、标识或 表达式,并且在同一语句中没有相应的DROP


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

ALTER TABLE DB2INST1.AAA_SEAT ADD COLUMN ID INTEGER NOT NULL默认值0

ALTER TABLE DB2INST1.AAA_SEAT ALTER COLUMN ID DROP DEFAULT


ALTER TABLE DB2INST1.AAA_SEAT ALTER COLUMN ID SET始终作为标识以1开头生成

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

ALTER TABLE DB2INST1.AAA_SEAT ADD COLUMN ID INTEGER NOT NULL默认值0

ALTER TABLE DB2INST1.AAA_SEAT ALTER COLUMN ID DROP DEFAULT


ALTER TABLE DB2INST1.AAA_SEAT ALTER COLUMN ID SET始终作为标识以1开头生成

我不知道DB2,它可能只是不允许向现有表添加序列,但您是否尝试将两者结合起来?ALTER?:ALTER table DB2INST1.AAA_BJ_BOND ADD COLUMN id INTEGER not NULL generated as identity始终以1开头;这仍然会导致错误,但下面给出了解决方案。我不知道DB2,它可能只是不允许向现有表中添加序列,但您是否尝试将两者结合起来?ALTER?:ALTER table DB2INST1.AAA_BJ_BOND ADD COLUMN id INTEGER not NULL general as identity start with 1;这仍然会导致错误,但解决方案如下。您的回答帮助我解决了这个问题。现在我已经通过以下三个步骤成功地将自动递增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始终作为标识以1开头生成;设置新的默认值后,执行此操作以替换旧的默认值:更新DB2INST1.AAA_BJ_BOND SET ID=default,其中ID=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始终作为标识以1开头生成;设置新的默认值后,执行此操作以替换旧的默认值:更新DB2INST1.AAA_BJ_BOND SET ID=default,其中ID=0;不要忘记为所有现有行设置唯一值:更新DB2INST1.AAA_SEAT SET ID=DEFAULT;不要忘记为所有现有行设置唯一值:更新DB2INST1.AAA_SEAT SET ID=DEFAULT;
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);