Sql Server批量刪除主鍵,新增自增長主鍵

2021-06-23 05:47:53 字數 1129 閱讀 2530

最近遇到乙個問題,乙個資料庫中有很多相近的表,已經有資料了,但是需要把主鍵修改為自動增長的,但是又不想刪除資料,只好先刪掉主鍵,然後再新增主鍵並設定自動增長。

因為這幾個表的主鍵名字是相同的,都是「kkkkkk」,我想用迴圈來實現,於是寫了個儲存過程,主要使用游標。

首先,查詢表名稱,主要通過sysobjects這個系統表

查詢表的主鍵約束

刪除主鍵約束

刪除主鍵

新增主鍵並設定自動增長

以上就是基本思路,剩下的就是迴圈了,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

sql server 批量刪除

sql server 批量刪除資料 建立表1 1 create table table1 23 id int primary keyidentity 1,1 4 msg varchar 24 5 loc varchar 24 6 style varchar 24 7 建立表2 1 表2 2creat...

SQL SERVER 批量刪除儲存過程

sqlserver 2005一次只能刪除乙個儲存過程,如果多了,需要很長時間才能刪完,所以寫了一段語句,直接就把當然資料庫下所有使用者自定義的儲存過程給drop了。不過使用都請留心,當前開啟的資料庫哦。下面貼 declare proccur cursor forselect name from sy...

sqlserver 2014 刪除主鍵約束

select from dict where dictcode and pid 5 truncate table menu select from sys.foreign keys where referenced object id object id menu 找到引用該錶的外來鍵 alter ...