DB2在原来的表里添加联合主键,添加非空列的方法

#大家都知道,我们的主键是不为空的,但是这时候我们要添加一个字段,与原有的主键组成联合主键,这个字段往往我们需要把它设置成一个非空的字段
这里有个坑如果原有的表里面是有数据的,这是时候直接使用语句进行字段的添加并设置为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);

不经常写博客,所以不太会组织语言,但希望可以解决您的问题,坑已认真踏过,请放心使用!

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值