使用SSMS数据库管理工具修改PRIMARY KEY

1、连接数据库,选择数据表-》右键点击-》选择设计(或者展开键,选择要修改的键,右键点击,选择修改,后面步骤相同)。

2、选择要修改的数据列-》右键点击-》选择索引/键。

3、在索引/键弹出框中-》选择要修改的主键-》类型选择主键-》点击列。

4、在索引列弹出框中-》选择主键数据列-》选择主键的排序规则-》点击确定。

5、在索引/键弹出框中-》输入要修改的主键名称-》输入要修改的主键描述-》表设计器规则可以使用系统默认-》点击关闭。

6、点击保存(或者ctrl+s)-》关闭表设计器-》刷新表-》查看修改结果。

使用T-SQL脚本修改PRIMARY KEY

若要使用 Transact-SQL 修改 PRIMARY KEY 约束,必须先删除现有的 PRIMARY KEY 约束,然后再用新定义重新创建该约束。

语法:

--声明使用数据库
use 数据库;
go

--如果已存在主键,则先删除再添加,如果不存在在则不删除
if exists(select * from sysobjects where name=主键名)
alter table 表名 drop constraint 主键名;
go

alter table 表名 
add constraint 主键名
primary key
[nonclustered | clustered]  ----在“表设计器”下的网格中,选择“创建为群集索引”,再从下拉列表中选择“是”创建群集索引,或选择“否”创建非群集索引。 对于每个表,只允许存在一个聚集索引。 如果此表中已经存在聚集索引,则您必须首先对原始索引清除此设置。
(列名 [asc | desc],列名 [asc | desc])
--statistics_norecompute=on:过时的统计信息不会自动重新计算。
--statistics_norecompute=off:启用自动统计信息更新。
--ignore_dup_key=on:打开,将重复键值插入唯一索引时会出现警告消息。只有违反唯一性约束的行才会失败。
--ignore_dup_key=off:关闭,将重复键值插入唯一索引时会出现错误消息。回滚整个INSERT操作。
--allow_row_locks=on:访问索引时允许行锁。数据库引擎确定何时使用行锁。
--allow_row_locks=off:不使用行锁。
--allow_page_locks=on:访问索引时允许页锁。数据库引擎确定何时使用页锁。
-- allow_page_locks=off:不使用页锁。
with(statistics_norecompute=off,ignore_dup_key=off,allow_row_locks=on,allow_page_locks=on) on [primary]
go

--添加主键描述
execute sp_addextendedproperty N'MS_Description', N'主键描述', N'SCHEMA', N'dbo', N'TABLE', N'表名', N'CONSTRAINT', N'主键名';
go

示例:

--声明使用数据库
use testss;
go

--如果已存在主键,则先删除再添加,如果不存在在则不删除
if exists(select * from sysobjects where name='PK__test1__3213E83F466EE881')
alter table test1 drop constraint PK__test1__3213E83F466EE881;
go

alter table test1
add constraint PK__test1__3213E83F466EE881
primary key
nonclustered ----在“表设计器”下的网格中,选择“创建为群集索引”,再从下拉列表中选择“是”创建群集索引,或选择“否”创建非群集索引。 对于每个表,只允许存在一个聚集索引。 如果此表中已经存在聚集索引,则您必须首先对原始索引清除此设置。
(id asc)
--statistics_norecompute=on:过时的统计信息不会自动重新计算。
--statistics_norecompute=off:启用自动统计信息更新。
--ignore_dup_key=on:打开,将重复键值插入唯一索引时会出现警告消息。只有违反唯一性约束的行才会失败。
--ignore_dup_key=off:关闭,将重复键值插入唯一索引时会出现错误消息。回滚整个INSERT操作。
--allow_row_locks=on:访问索引时允许行锁。数据库引擎确定何时使用行锁。
--allow_row_locks=off:不使用行锁。
--allow_page_locks=on:访问索引时允许页锁。数据库引擎确定何时使用页锁。
-- allow_page_locks=off:不使用页锁。
with(statistics_norecompute=off,ignore_dup_key=off,allow_row_locks=on,allow_page_locks=on) on [primary]
go

--添加主键描述
execute sp_addextendedproperty N'MS_Description', N'修改唯一主键', N'SCHEMA', N'dbo', N'TABLE', N'test1', N'CONSTRAINT', N'PK__test1__3213E83F466EE881';
go

修改PRIMARY KEY主键优缺点

优点:

1、主键可以是任意数据类型。

2、整型主键简单、效率高。

3、使用GUID作为主键安全,保证唯一性。

4、使用GUID作为主键不会产生自增字段那样数据合并时的问题。

缺点:

1、整型主键有数据条数的限制。

2、整型主键在数据库进行数据合并时会比较麻烦。

3、整型之外的数据类型毫无规律,要在上面建立索引很耗时,所以效率要比使用自增字段低。

4、整型之外的主键占用大量存储空间。

SQLServer之修改PRIMARY KEY的更多相关文章

  1. SQLServer之修改FOREIGN KEY约束

    使用SSMS数据库管理工具修改FOREIGN KEY约束 1.连接数据库,选择数据表->右键点击->选择设计(或者展开键,选择要修改的外键,右键点击,选择修改,后面修改步骤相同). 2.在 ...

  2. SQLServer 中有五种约束, Primary Key 约束、 Foreign Key 约束、 Unique 约束、 Default 约束和 Check 约束

    一直在关注软件设计方面,数据库方面就忽略了很多,最近在设计数据库时遇到了一些小麻烦,主要是数据库中约束和性能调优方面的应用,以前在学习 Sql Server 2000,还有后来的 Sql Server ...

  3. SQLServer之PRIMARY KEY约束

    PRIMARY KEY约束添加规则 1.在表中常有一列或多列的组合,其值能唯一标识表中的每一行,这样的一列或多列成为表的主键(PrimaryKey). 2.一个表只能有一个主键,而且主键约束中的列不能 ...

  4. SQLSERVER聚集索引和主键(Primary Key)的误区认识

    引用别人的,供以后学习使用,谢谢! 很多人会把Primary Key和聚集索引搞混起来,或者认为这是同一个东西.这个概念是非常错误的. 主键是一个约束(constraint),他依附在一个索引上,这个 ...

  5. SQLServer Alter 修改表的列名的解决

    解决:在SQLServer中修改表的列名,可以调用存储过程sp_rename. [sql]use Test;--使用数据库  sp_rename 'd_s_t.avg_grade','avg_g',' ...

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

    1.我们在创建sqlserver得数据表的主键的时候,有时会出现,后面加一串随机字符串的情况,如图所示: 2.如果你有强迫症的话,可以使用以下sql脚本进行修改,将主键的名称修改为PK_表名. --将 ...

  7. ASP.NET MVC another entity of the same type already has the same primary key value

    ASP.NET MVC项目 Repository层中,Update.Delete总是失败 another entity of the same type already has the same pr ...

  8. MYSQL—— 完整性约束条件中primary key、auto_increment使用总结!

    完整性约束条件主要有:primary key(主键), auto_increment(自增长), poreign key(外键), not null(非空), unique key(唯一), defa ...

  9. 数据库六大约束用法:主键(primary key)、外键(foreign key)、非空(not null)、默认(default)、检查(check)、唯一(unique)

    1. 数据库有六大约束 主键(primary key) 外键(foreign key):被参照的键必须有唯一约束或是主键 非空(not null) 默认(default) 检查(check):orac ...

随机推荐

  1. python3安装sklearn机器学习库

    安装sklearn需要的库请全部在万能仓库下载: http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy http://www.lfd.uci.edu/~go ...

  2. SqlServer突破亿级数据操作瓶颈(出处:转载)

    首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文中有不对的地方,请各位数据库大牛给予指正,以便我能够更好的处理此次业务. ...

  3. Python爬虫入门教程 3-100 美空网数据爬取

    美空网数据----简介 从今天开始,我们尝试用2篇博客的内容量,搞定一个网站叫做"美空网"网址为:http://www.moko.cc/, 这个网站我分析了一下,我们要爬取的图片在 ...

  4. C语言中你可能不熟悉的头文件(stdlib.h)

    C语言中你可能不熟悉的头文件<cstdlib>(stdlib.h) C Standard General Utilities Library (header) C标准通用工具库(头文件) ...

  5. C++版 - 剑指offer面试题38:数字在已排序数组中出现的次数

    数字在已排序数组中出现的次数 提交网址: http://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2?tpId=13&t ...

  6. WebApi系列~对HttpClient的响应流进行解压

    回到目录 有时我们的请求头为ContentEncoding添加了gzip进行了压缩,而服务端返回数据时也会对它进行gzip压缩,如果在这种情况下,你直接头响应流会是乱码,而必须先进行压缩,大叔将这块的 ...

  7. Chapter 4 Invitations——25

    "So you are trying to irritate me to death? Since Tyler's van didn't do the job?" "所以 ...

  8. spring-boot-2.0.3启动源码篇四 - run方法(三)之createApplicationContext

    前言 此系列是针对springboot的启动,旨在于和大家一起来看看springboot启动的过程中到底做了一些什么事.如果大家对springboot的源码有所研究,可以挑些自己感兴趣或者对自己有帮助 ...

  9. Nacos系列:基于Nacos的注册中心

    前言 所谓注册中心,其实是分布式架构演进过程中的产物,在系统中充当一个协调者的角色.但是,为什么需要这样一个协调者的角色呢?我们先来看一个例子,以便理解为什么分布式架构中需要有注册中心. 案例 小明和 ...

  10. percona-toolkit 之 【pt-archiver】

    背景: 工作上需要删除或则归档一张大表,这时候用pt-archiver可以很好的满足要求,其不仅可以归档数据,还有删除.导出到文件等功能.并且在主从架构当中,可以兼顾从库(一个或则多个)进行归档,避免 ...