Sql Server批量删除主键,添加自增长主键

最近遇到一个问题,一个数据库中有很多相近的表,已经有数据了,但是需要把主键修改为自动增长的,但是又不想删除数据,只好先删掉主键,然后再添加主键并设置自动增长。

因为这几个表的主键名字是相同的,都是“KKKKKK”,我想用循环来实现,于是写了个存储过程,主要使用游标。

  1. 首先,查询表名称,主要通过sysObjects这个系统表
  2. 查询表的主键约束
  3. 删除主键约束
  4. 删除主键
  5. 添加主键并设置自动增长

以上就是基本思路,剩下的就是循环了,sql server只有while循环,可以用游标来读取sql查询结果,代码如下:

BEGIN
DECLARE @tableName varchar(100);
	DECLARE test_curse CURSOR FAST_FORWARD FOR
	select name from sysobjects where type='u' and name like 'B[_]__';
	OPEN test_curse;
	FETCH NEXT FROM test_curse INTO @tableName;
	WHILE @@fetch_status=0
	BEGIN
		declare @PK varchar(100) ; 
		select @PK=name from sysobjects where xtype='PK' and parent_obj=object_id(@tableName);
		PRINT @PK;
		exec ('alter table '+ @tableName+' drop CONSTRAINT '+@PK);
		EXEC('alter table '+ @tableName+' drop column KKKKKK');
		EXEC('ALTER TABLE '+ @tableName+' ADD  KKKKKK DECIMAL(32) IDENTITY(1,1) PRIMARY KEY');
		FETCH NEXT FROM test_curse INTO @tableName;
END;
CLOSE test_curse;
DEALLOCATE test_curse;
END



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值