【发布时间】:2011-02-17 00:15:57
【问题描述】:
如何在视觉工作室中对 varchar(max) 字段创建唯一约束。
问题出在我尝试的时候:
管理索引和键 > 添加 > 列
我只能选择 bigint 列,但不能选择任何 varchar(max) 列。
我是否必须使用检查约束?
如果是,表达式中的内容是什么?
谢谢你的信息
【问题讨论】:
标签: sql sql-server visual-studio-2010 unique-constraint
如何在视觉工作室中对 varchar(max) 字段创建唯一约束。
问题出在我尝试的时候:
管理索引和键 > 添加 > 列
我只能选择 bigint 列,但不能选择任何 varchar(max) 列。
我是否必须使用检查约束?
如果是,表达式中的内容是什么?
谢谢你的信息
【问题讨论】:
标签: sql sql-server visual-studio-2010 unique-constraint
您不能在 VARCHAR(MAX) 列上设置唯一约束(最多可以是 2 GB 的文本!!)。你只是不能。
唯一约束由后台的唯一索引强制执行,SQL Server 对索引条目有 900 字节的限制。因此,您也不能对 VARCHAR(2000) 字段设置唯一约束。
您需要找到另一种方法来实现您想要做的事情。你可以例如计算文本的长度和校验和之类的东西,并对这些长度和校验和列设置唯一约束。
【讨论】:
执行此操作的一种方法是为哈希添加一列,该哈希在您插入或更新该列时计算,并在其上放置一个唯一索引。虽然确实会发生哈希冲突,但它极不太可能发生。
你可以使用这个 T-SQL 关键字:
【讨论】:
即使这是可能的,那也是个坏主意。
1) 还有另一种方法。查找一些其他数据以用作您的唯一列
2) 如果您绝对必须使用 varchar(Max)。也许在插入/更新时对其进行散列并添加一个散列列?
【讨论】: