【发布时间】:2016-05-29 04:37:48
【问题描述】:
我的 DB2 数据库中有一个具有以下模式的表。
CREATE TABLE IDN_OAUTH_CONSUMER_APPS (
CONSUMER_KEY VARCHAR (255) NOT NULL,
CONSUMER_SECRET VARCHAR (512),
USERNAME VARCHAR (255),
TENANT_ID INTEGER DEFAULT 0,
APP_NAME VARCHAR (255),
OAUTH_VERSION VARCHAR (128),
CALLBACK_URL VARCHAR (1024),
GRANT_TYPES VARCHAR (1024)
/
我需要添加一个类型为整数而不是空自动增量的新列 ID,并将其作为主键。如何在不删除表的情况下做到这一点?
【问题讨论】:
-
表格是否已经值了?到目前为止,您尝试了什么,有什么错误,有什么要分享的吗?
-
是的,表有值,我尝试了“ALTER TABLE IDN_OAUTH_CONSUMER_APPS ADD COLUMN ID INTEGER NOT NULL”,想在添加列后添加一个序列,但是如果不添加默认值,我就无法添加非空价值
-
alter table IDN_OAUTH_CONSUMER_APPS add ID INTEGER not null default 0; alter table IDN_OAUTH_CONSUMER_APPS alter column ID drop default; alter table IDN_OAUTH_CONSUMER_APPS alter column ID set GENERATED ALWAYS AS IDENTITY (start with 1); update IDN_OAUTH_CONSUMER_APPS set ID = DEFAULT; alter table IDN_OAUTH_CONSUMER_APPS add primary key (ID); call sysproc.admin_cmd('reorg table IDN_OAUTH_CONSUMER_APPS');
标签: sql db2 auto-increment dbmigrate