创建unique时,约束和索引有何区别。唯一约束和唯一索引区别,选项"忽略重复键"作用

来源:互联网 发布:mysql数据库巡检 编辑:程序博客网 时间:2024/04/28 22:47

以下转自:http://bbs.csdn.net/topics/190120355

创建唯一索引保证了往表中插入重复索引列值的操作都会失败。如果一个单独的sql语句试图往表中插入包含重复索引列值的数据行,sql server将不会插入以上所有行。例如,当一个insert操作试图把从表A中取出的20行插入到表B,而其中的10行跟索引列值重复的话,默认情况下以上20行都不会被插入。然而,如果把索引对应的 “忽略重复键”开关打开的话,包含重复数值的行不会被插入,而非重复数值行会被插入。也就是说,其中的10行会被插入。


约束则没有这一开关,因此定义了一个约束之后,只要有与定义列重复值的行,插入都将被拒绝。

我的个人看法是,索引和约束本质上是相同的,可能区别也就在于此。  



以下转自:http://bbs.csdn.net/topics/90010747

unique约束与unique索引后者包含了前者,且有索引的作用.
如果某列有多行包含 NULL 值,则不能在该列上创建unique索引 

因为unique约束也是通过unique索引实现的.
============================================================

唯一的区别在于建立和删除上.
索引是使用 create/drop index 创建和删除的
而约束是使用 alter table tb add constraint 建立, 使用 drop constraint 删除  

============================================================

忽略重复值这个选项设置上后, 如果你插入的数据的值与现有值重复, 则插入不会失败, 而是自动跳过重复的这条记录的插入.

1 0
原创粉丝点击