19

如何在视觉工作室中创建对 varchar(max) 字段的唯一约束。

问题是当我尝试它时:

管理索引和键 > 添加 > 列

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

我可能必须使用检查约束吗?

如果是,在表达式中添加什么?

谢谢你的信息

4

3 回答 3

21

您不能在VARCHAR(MAX)列上设置唯一约束(最多可能是 2 GB 的文本!!)。你只是不能。

唯一约束由后台的唯一索引强制执行,SQL Server 对索引条目有 900 字节的限制。VARCHAR(2000)出于这个原因,您也不能对字段设置唯一约束。

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

于 2010-05-07T20:58:21.307 回答
2

执行此操作的一种方法是为每次插入或更新列时计算的哈希添加一列,并在其上放置唯一索引。尽管确实会发生哈希冲突,但这种可能性极小

你可以使用这个 T-SQL 关键字:

http://msdn.microsoft.com/en-us/library/ms174415.aspx

于 2010-05-07T21:04:32.963 回答
1

即使这是可能的,这也是一个坏主意。

1)还有另一种方法。查找其他一些数据以用作您的唯一列

2) 如果你绝对必须使用 varchar(Max)。也许在插入/更新时对其进行散列并添加一个散列列?

于 2010-05-07T21:00:48.347 回答