sqlserver 批量修改数据库表主键名称为PK_表名
程序员文章站
2022-03-10 19:53:20
sqlserver 批量修改表的主键名称,批量修改数据表的名称 ......
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.你可以可以对以上脚本进行修改,比如批量给表的前面增加某个字符串,聪明的你肯定知道怎么做的。
上一篇: vue里不同数据的循环,其中的数组对象
下一篇: WebApp开发-Zepto