SQLServer之修改UNIQUE约束
使用SSMS数据库管理工具修改UNIQUE约束
1、连接数据库,选择数据表-》右键点击-》选择设计(或者展开键,选择要修改的键,右键点击,选择修改,后面步骤相同)。


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

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

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

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

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

使用T-SQL脚本修改UNIQUE约束
若要使用 Transact-SQL 修改 UNIQUE 约束,必须首先删除现有的 UNIQUE 约束,然后用新定义重新创建。
语法:
--修改唯一约束
--声明数据库引用
use 数据库名;
go
--判断是否唯一约束是否存在,如果存在则删除,不存在则添加
if exists(select * from sysobjects where name=约束名)
alter table 数据库名 drop constraint 约束名;
go
--添加唯一约束
alter table 表名
add constraint 约束名
unique
[nonclustered|clustered] --在“表设计器”下的网格中,选择“创建为群集索引”,再从下拉列表中选择“是”创建群集索引,或选择“否”创建非群集索引。 对于每个表,只允许存在一个聚集索引。 如果此表中已经存在聚集索引,则您必须首先对原始索引清除此设置。
(列名 [asc|desc])
--fillfactor:填充因子适用于底层,指定一个百分比,指示数据库引擎在索引创建或更改期间应该使每个索引页的叶级别有多满。指定的值必须是1到100之间的整数值。默认值为0。
--pad_index=on:FILLFACTOR指定的可用空间百分比将应用于索引的中间级页面。
--pad_index=off or or fillfactor is not specified:在给定中间页面上的一组键的情况下,中间级页面被填充到接近容量,为索引可以具有的最大大小的至少一行留下足够的空间。
--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(pad_index=off,fillfactor=1,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='unique1')
alter table test1 drop constraint unique1;
go
--添加唯一约束
alter table test1
add constraint unique1
unique
nonclustered --在“表设计器”下的网格中,选择“创建为群集索引”,再从下拉列表中选择“是”创建群集索引,或选择“否”创建非群集索引。 对于每个表,只允许存在一个聚集索引。 如果此表中已经存在聚集索引,则您必须首先对原始索引清除此设置。
(name asc)
--fillfactor:填充因子适用于底层,指定一个百分比,指示数据库引擎在索引创建或更改期间应该使每个索引页的叶级别有多满。指定的值必须是1到100之间的整数值。默认值为0。
--pad_index=on:FILLFACTOR指定的可用空间百分比将应用于索引的中间级页面。
--pad_index=off or or fillfactor is not specified:在给定中间页面上的一组键的情况下,中间级页面被填充到接近容量,为索引可以具有的最大大小的至少一行留下足够的空间。
--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(pad_index=off,fillfactor=1,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'unique1';
go

UNIQUE约束修改优缺点
优点:
1、可以使用唯一约束扩大列数据约束范围。
缺点:
1、如果列存在唯一约束,要列数据类型,可能会修改失败。
SQLServer之修改UNIQUE约束的更多相关文章
- SQLServer之修改DEFAULT约束
使用SSMS数据库管理工具修改DEFAULT约束 1.连接数据库.选择数据表->右键点击->选择设计. 2.在表设计器窗口->选中要修改的数据列->在列属性中找到默认值绑定-& ...
- SQLServer之修改CHECK约束
使用SSMS数据库管理工具修改CHECK约束 1.打开数据库,选择数据表->右键点击->选择设计(或者展开约束,选择约束,右键点击,选择修改,后面步骤相同). 2.选择要修改的数据列-&g ...
- Constraint5:unique 约束和null
unique约束使用unique index来限制列值的唯一性: 创建unique约束之后,column中允许插入null值,unique 约束将两个null值看作是相同的(即null=null为tr ...
- SQLServer之UNIQUE约束
UNIQUE约束添加规则 1.唯一约束确保表中的一列数据没有相同的值. 2.与主键约束类似,唯一约束也强制唯一性,但唯一约束用于非主键的一列或者多列的组合,且一个表可以定义多个唯一约束. 使用SSMS ...
- SQLServer 中有五种约束, Primary Key 约束、 Foreign Key 约束、 Unique 约束、 Default 约束和 Check 约束
一直在关注软件设计方面,数据库方面就忽略了很多,最近在设计数据库时遇到了一些小麻烦,主要是数据库中约束和性能调优方面的应用,以前在学习 Sql Server 2000,还有后来的 Sql Server ...
- SQLServer Alter 修改表的列名的解决
解决:在SQLServer中修改表的列名,可以调用存储过程sp_rename. [sql]use Test;--使用数据库 sp_rename 'd_s_t.avg_grade','avg_g',' ...
- SQLServer之FOREIGN KEY约束
FOREIGN KEY约束添加规则 1.外键约束并不仅仅可以与另一表的主键约束相链接,它还可以定义为引用另一个表中 UNIQUE 约束的列. 2.如果在 FOREIGN KEY 约束的列中输入非 NU ...
- [SqlServer]SQL Server创建约束图解
SQLServer 中有五种约束, Primary Key 约束. Foreign Key 约束. Unique 约束. Default 约束和 Check 约束,今天使用SQL Server2008 ...
- SQL CREATE TABLE 语句\SQL 约束 (Constraints)\SQL NOT NULL 约束\SQL UNIQUE 约束
CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库中的表. SQL CREATE TABLE 语法 CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据 ...
随机推荐
- Python 字典和集合基于哈希表实现
哈希表作为基础数据结构我不多说,有兴趣的可以百度,或者等我出一篇博客来细谈哈希表.我这里就简单讲讲:哈希表不过就是一个定长数组,元素找位置,遇到哈希冲突则利用 hash 算法解决找另一个位置,如果数组 ...
- 微信小程序入门(五)
24.MINA框架讲解 MINA框架架构 25.小程序运行机制 小程序在首次打开的时间会比较长,后续再打开启动会很快,那么小程序是如何启动的呢? 运行机制-启动 冷启动 热启动 热启动:假入用户已经打 ...
- AspNetCore 目前不支持SMTP协议(基于开源组件开发邮件发送,它们分别是MailKit 和 FluentEmail )
net所有的功能都要重新来一遍,集成众多类库,core任重道远,且发展且努力!! 我们都知道,很多的邮件发送都是基于这个SMTP协议,但现在的.net core对这方面还不太支持,所以我们选择这两个组 ...
- Qt之自绘制饼图
1.说明 最近在搞绘图方面的工作,说实话C++的第三方绘图库并不算多,总之我了解的有:qtcharts.ChartDirector.qwt.kdchart和QCustomPlot.这几个库各有利弊. ...
- 『Raid 平面最近点对』
平面最近点对 平面最近点对算是一个经典的问题了,虽然谈不上是什么专门的算法,但是拿出问题模型好好分析一个是有必要的. 给定\(n\)个二元组\((x,y)\),代表同一平面内的\(n\)个点的坐标,求 ...
- AbstractQueuedSynchronizer源码分析(ReentrantLock锁的实现)
1. 前言 Java中好多地方用到AbstractQueuedSynchronizer(PS:简称AQS),比如ReentrantLock.线程池,这部分在面试的时候也经常被问到,今天以Reentr ...
- 并发编程(三)—— ReentrantLock的用法
ReentrantLock是Java并发包中提供的一个可重入的互斥锁.ReentrantLock和synchronized在基本用法,行为语义上都是类似的,同样都具有可重入性.只不过相比原生的Sync ...
- redis 系列7 数据结构之跳跃表
一.概述 跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的.在大部分情况下,跳跃表的效率可以和平衡树(关系型数据库的索引就是平衡树 ...
- JDK源码分析(10)之 Hashtable 相关
本文的目的并不是让你对Hashtable更加了解,然后灵活运用:因为Hashtable的一个历史遗留的类,目前并不建议使用,所以本文主要和HashMap对比,感受同样功能的不同实现,知道什么是好的代码 ...
- MVC Scaffolding SmartCode-Engine 更新
概述 通过扩展visual studio.net scaffolding组件,添加了一套功能完善的代码模板,包括Controller,Model,View,Businessd等各种功能的代码,配合En ...