请问mssql2k中的创建unique约束与unique索引有啥区别?

hsn1982 珠海市晟意网络科技有限公司 CTO/CIO/技术副总裁/总工程师  2006-05-15 05:09:06
我测试了这两种,两种都可以做到限制唯一值。而且选项"忽略重复键"不起作用的,选与不选效果都一样是可以限制唯一值。

请问大家这是什么原因
...全文
699 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
RainyBoo 2007-01-29
谢谢大家给予的详细的解答。
回复
保存起来。
回复
luoqun_ncs 2006-05-15
唯一索引:里面可以有重复值,create的时候有选项的
唯一约束:为了实现唯一约束,数据库会强制定义一个唯一索引在数据库上面(为了性能),但是加了唯一约束以后就不能有重复值了

至于null值,sql server只允许加了唯一约束的列里面有一个null,oracle可以有多个null值.
回复
hsn1982 2006-05-15
to zjcxc(邹建):
你的意思是选中“忽略重复值”时,如果在约束字段上插入已存在的值,不会返回错误,但还是插入失败。对吗?
回复
zjcxc 元老 2006-05-15
忽略重复值这个选项设置上后, 如果你插入的数据的值与现有值重复, 则插入不会失败, 而是自动跳过重复的这条记录的插入.
回复
hsn1982 2006-05-15
to WangZWang(阿来) :
unique约束与unique索引的区别就是这样的阿。那“忽略重复值”有什么作用呢?
回复
itblog 2006-05-15
索引有唯一索引和非唯一索引。唯一索引保证表中没有两行在定义索引的列上具有重复值。在唯一码上自动地定义唯一索引实施UNIQUE完整性约束
回复
zjcxc 元老 2006-05-15
功能上没有区别.

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


唯一的区别在于建立和删除上.

索引是使用 create/drop index 创建和删除的
而约束是使用 alter table tb add constraint 建立, 使用 drop constraint 删除
回复
liangpei2008 2006-05-15
关注楼主问题
回复
WangZWang 2006-05-15
unique约束与unique索引后者包含了前者,且有索引的作用.
如果某列有多行包含 NULL 值,则不能在该列上创建unique索引
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2006-05-15 05:09
社区公告
暂无公告