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

来源:互联网 发布:aes数据加密器 编辑:程序博客网 时间:2024/05/23 19:17

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

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

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

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

BEGINDECLARE @tableName varchar(100);DECLARE test_curse CURSOR FAST_FORWARD FORselect name from sysobjects where type='u' and name like 'B[_]__';OPEN test_curse;FETCH NEXT FROM test_curse INTO @tableName;WHILE @@fetch_status=0BEGINdeclare @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