#大家都知道,我们的主键是不为空的,但是这时候我们要添加一个字段,与原有的主键组成联合主键,这个字段往往我们需要把它设置成一个非空的字段
这里有个坑如果原有的表里面是有数据的,这是时候直接使用语句进行字段的添加并设置为not null是不可以的,会报错!那么怎么解决呢!分为以下几个步骤一一进行即可:
比如:我们要在TABLE_EMPLOYEE中添加一个字段USER_ID与之前的EMPLOYEE_ID作为联合主键(假设原表中有值):
**1.创建列:**
alter table TABLE_EMPLOYEE add column USER_ID varchar(30);
**2.在DB2的服务端用cmd中对此表进行重构(没有重构会报错-668):**
reorg table <TABLE_EMPLOYEE>
**3.向此列中添加值,这里可以不用where条件,因为我们的目的就是想把此列的数据全部填充为非空:**
update TABLE_EMPLOYEE set USER_ID='DWEFEWF';
**4.设置USER_ID为非空:**
alter table TABLE_EMPLOYEE alter USER_ID set not null;
上面的设置字段为空的方法就解决了,下面就开始设置联合主键了
**5.删除原有的联合主键:**
ALTER TABLE TABLE_EMPLOYEE DROP primary key ;
**6.重复第二步操作:**
reorg table <TABLE_EMPLOYEE>
**7.添加联合主键:**
alter TABLE TABLE_EMPLOYEE
add constraint PK_FK
primary key(EMPLOYEE_ID,USER_ID);
不经常写博客,所以不太会组织语言,但希望可以解决您的问题,坑已认真踏过,请放心使用!