sqlserver 批量修改数据库表主键名称为PK_表名

1.我们在创建sqlserver得数据表的主键的时候,有时会出现,后面加一串随机字符串的情况,如图所示:

 

 2.如果你有强迫症的话,可以使用以下sql脚本进行修改,将主键的名称修改为pk_表名.

--将表的主键名统一规范为pk_表名
  
declare @pk_name_old varchar(100),@table_name varchar(100),@pk_name_new varchar(100),@col_name varchar(100)
declare cursor_update_table_pk_name cursor for

select 
  a.name as 'tbl_name',
  e.name as 'col_name',
  b.name,
  'pk_'+a.name as 'new_pk_name'
from sysobjects as a          --对象表,结合a.xtype='u'条件,查用户表
 left join sysobjects as b --对象表,结合b.xtype='pk'条件,查主键约束
  on a.id=b.parent_obj
 left join sysindexes as c --索引表,根据(主键)约束名称匹配,查对应字段索引
  on a.id=c.id and b.name=c.name
 left join sysindexkeys as d --索引中对应键、列的表,根据索引匹配,查字段id
  on a.id=d.id and c.indid=d.indid
 left join syscolumns as e --字段表,根据字段id匹配,查字段名称
  on a.id=e.id and d.colid=e.colid
where a.xtype='u'
  and b.xtype='pk'
  
open cursor_update_table_pk_name
fetch next from cursor_update_table_pk_name into @table_name,@col_name,@pk_name_old,@pk_name_new
while @@fetch_status = 0
	begin
		print ''+@table_name
			-- 存在主键约束,则删除 
			--if exists(select * from sysobjects where name=@pk_name_old and xtype='pk')
			
			exec('alter table '+@table_name+' drop constraint '+@pk_name_old)
			
			 -- 重新添加主键约束
			exec('alter table '+@table_name+' add constraint '+@pk_name_new+' primary key ('+@col_name+') ')
			
		fetch next from cursor_update_table_pk_name into @table_name,@col_name,@pk_name_old,@pk_name_new
	end
close cursor_update_table_pk_name
deallocate cursor_update_table_pk_name

  使用以上代码可以批量将表的主键名进行修改

3.你可以可以对以上脚本进行修改,比如批量给表的前面增加某个字符串,聪明的你肯定知道怎么做的。

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐