SQL Server唯一约束问题

b0x*_*0rz 16 sql sql-server visual-studio-2010 unique-constraint

如何在visual studio中的varchar(max)字段上创建唯一约束.

问题是我试试的时候:

管理索引和键>添加>列

我只能选择bigint列,但不能选择任何varchar(max)列.

我是否可能必须使用检查约束

如果是的话,在表达中放什么?

Thnx的信息

mar*_*c_s 19

您不能在VARCHAR(MAX)列上放置唯一约束(可能最多2 GB的文本!!).你根本就不能.

唯一约束由后台中的唯一索引强制执行,SQL Server对索引条目具有900字节的限制.VARCHAR(2000)由于这个原因,您也无法在字段上添加唯一约束.

你需要找到另一种方法来实现你想要做的事情.您可以例如计算长度以及类似于文本的校验和,并对这些长度和校验和列设置唯一约束.

  • 神圣的垃圾人,一个EMAIL字段?是的,缩短它.当有人给我看一个2GB长的电子邮件地址时,我会吃掉我的话 (10认同)
  • 是的,缩短它.根据http://email.about.com/od/emailbehindthescenes/f/address_length.htm,最大长度为320个字符. (4认同)
  • 我使用 Varchar(100) 已有大约 10 年了,但我还没有见过任何电子邮件能达到这样的效果。 (2认同)
  • @ b0x0rz:每个索引条目(构成一个索引条目的所有列的长度)对于每个索引,在任何表上都不能超过900个字节.例如,您可以有两个VARCHAR(200)字段 - 但不能有两个VARCHAR(500)字段. (2认同)
  • @ b0x0rz之前的段落推荐32,256或4k - 而且我认为完全未知的一般规则是好的.但通常情况下,我会在我的需求收集中获得更好的信息,并且一旦我知道它就会在数据库中强制执行.执行长度(如任何约束)将有助于更早地捕获意外问题.更糟糕的是,发现你多年来一直收到大量无效的电子邮件,或者发现有人的电子邮件地址太长,你需要稍微修改一下系统. (2认同)