【发布时间】:2012-10-30 20:58:44
【问题描述】:
我对 SQL Server 还很陌生,所以如果我说的任何话都没有道理,我很有可能只是被某些东西弄糊涂了。总之……
我有一个简单的映射表。它有两列,Before 和 After。我想要的只是Before 列是唯一的约束。最初它被设置为主键,但是当值太大时会产生错误。我尝试添加一个ID 列作为主键,然后将UNIQUE 添加到Before 列,但是最大长度超过900 字节时我遇到了同样的问题(我猜约束会创建一个索引)。
我能想到的唯一选择是将id 列更改为校验和列并将其设为主键,但我不喜欢这个选项。有不同的方法可以做到这一点吗?我只需要两个简单的列。
【问题讨论】:
-
什么关系型数据库?什么是列数据类型?他们需要那么宽吗?
-
当您说“校验和”时,您是在谈论哈希吗?
-
我正在使用 Microsoft SQL 服务器。它们都是 nvarchar,是的,它们需要那么宽。是的哈希。将列校验和到它自己的列中。检查它的唯一性。
-
不,SQL Server 没有办法做到这一点。
UNIQUE约束始终通过唯一索引强制执行,并且最大值。任何索引条目的大小都是 900 字节 - 这是一个硬性的系统范围限制 - 您无法更改/配置它。
标签: sql-server indexing primary-key