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.你可以可以对以上脚本进行修改,比如批量给表的前面增加某个字符串,聪明的你肯定知道怎么做的。
sqlserver 批量修改数据库表主键名称为PK_表名的更多相关文章
- 使用GUID作为数据表主键的好处(转)
http://blog.itpub.net/3875/viewspace-789520/ 分类: 数据库开发技术 使用GUID作为数据表主键的好处 [@more@] 使用GUID作为数据表主键的好处 ...
- SQLServer中查询表结构(表主键 、列说明、列数据类型、所有表名)的Sql语句
SQLServer中查询表结构(表主键 .列说明.列数据类型.所有表名)的Sql语句 1.查询数据库中的所有表名称: SELECT name FROM SysObjects Where XType=' ...
- 【数据库】Mysql中主键的几种表设计组合的实际应用效果
写在前面 前前后后忙忙碌碌,度过了新工作的三个月.博客许久未新,似乎对忙碌没有一点点防备.总结下来三个月不断的磨砺自己,努力从独乐乐转变到众乐乐,体会到不一样的是,连办公室的新玩意都能引起莫名的兴趣了 ...
- PostgreSQL数据库中获取表主键名称
PostgreSQL数据库中获取表主键名称 一.如下表示,要获取teacher表的主键信息: select pg_constraint.conname as pk_name,pg_attribute. ...
- SQL语句获取数据库中的表主键,自增列,所有列
SQL语句获取数据库中的表主键,自增列,所有列 获取表主键 1:SELECT TABLE_NAME,COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_U ...
- 设置MySQL数据表主键
设置MySQL数据表主键: 使用“primary key”关键字创建主键数据列.被设置为主键列不允许出现重复的值,很多情况下与“auto_increment”递增数字相结合.如下SQL语句所示: My ...
- mybatis+sqlserver中返回非自增主键
首先把实体类贴出来(这里只贴出属性,其它的就是getter和setter方法): public class Around { private String xccd; //对应主键 ...
- day03 MySQL数据库之主键与外键
day03 MySQL数据库之主键与外键 昨日内容回顾 针对库的基本SQL语句 # 增 create database meng; # 查 show databases; shwo create da ...
- Java MyBatis 插入数据库返回主键
最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...
随机推荐
- 使用dlib基于CNN(卷积神经网络)的人脸检测器来检测人脸
基于机器学习CNN方法来检测人脸比之前介绍的效率要慢很多 需要先下载一个训练好的模型数据: 地址点击下载 // dlib_cnn_facedetect.cpp: 定义控制台应用程序的入口点. // # ...
- CSS-11-外边距
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Docker底层架构之网络实现
前言 Docker 的网络实现其实就是利用了 Linux 上的网络命名空间和虚拟网络设备(特别是 vethpair). 基本原理 首先,要实现网络通信,机器需要至少一个网络接口(物理接口或虚拟接口)来 ...
- pico g2 触摸板手柄射线检测---for unity
1.pico g2手柄射线检测UI,需要在canvas添加Graphic Raycaster脚本和Pvr_Ui Canvas脚本. 2.删除掉原有的maincamera,将Pvr_unitySDK下h ...
- java核心技术----接口
接口:用来描述类具有什么功能,而并不给出每个功能的具体实现. 一个类可以实现一个或多个接口. 克隆(深拷贝):创建一个新对象,且新的对象的状态与原始对象的状态相同.当对克隆的新对象进行修改时,不会影响 ...
- CSAPP
陆陆续续花了2个月的时间终于把这个久负盛名的CSAPP看完了,不愧为一本名副其实的经典书籍.有种相见恨晚的感觉,以至于从不会写书评的我也情不自禁的想说点什么. 这本书的书名叫"Comput ...
- JsonCpp中文unicode编码问题
用JsonCpp解析C++中文unicode编码,转换问题,今天找打了一种解决办法 这个问题画了不少时间,贴出来供大家参考 在json_reader.cpp中找到codePointToUTF8函数,添 ...
- TCP、UDP 协议的区别
TCP 面向连接 可靠 传输形式:字节流 传输效率:慢 所需资源:多 首部字节:20-60 应用场景:要求通讯数据可靠(如文件传输.邮件传输) UPD 无连接 不可靠 传输形式:数据报文段 传输效率: ...
- BeautifulSoup入门
BeautifulSoup库入门 BeautifulSoup库的理解 BeautifulSoup库是解析.遍历.维护”标签树”的功能库 示例代码: from bs4 import BeautifulS ...
- Thread Based Parallelism - Thread in a Subclass
Thread Based Parallelism - Thread in a Subclass 1 import threading import time exit_Flag = 0 class m ...