唯一性约束的数据库完整性控制还挺实用的,尤其是在你想确保某列不能有重复值时,比如用户表的邮箱、手机号之类。创建表的时候就能加UNIQUE约束,啦,表建好后也能加——前提是原来的数据得是唯一的哦,不然 SQL Server 可不给你面子,直接报错。

UNIQUE 约束加上之后,数据库就自动帮你管好重复值的问题,不用自己每次写逻辑校验,省心不少。它默认会建一个非聚集索引,你也可以手动指定聚集的,但一般默认的也够用了。

不过要改约束就没那么方便了,得先删掉再建新的,不能直接改。这个操作建议在数据量不大、业务低峰期搞,不然容易出幺蛾子。

如果你对索引机制还不太熟,推荐看看聚集索引与非聚集索引的对比,讲得挺清楚的;另外还有篇基于数据完整性的唯一约束优化,适合进阶理解。

,UNIQUE 约束这个功能属于“用起来没啥感觉,不用容易出锅”的类型。如果你在做用户管理、产品编号、订单号之类的业务,一定要记得用上。