【发布时间】:2010-12-17 05:35:53
【问题描述】:
由于与问题不太相关的各种原因,我有一个表,其中包含由两个整数组成的复合键,我想从这两个数字中创建一个唯一键。我最初的想法是把它们串联起来,但是当我意识到 (51,1) 的复合键会产生与 (5,11) 相同的唯一键,即 511 时,我很快遇到了问题。
有没有人有聪明的方法从两个整数中生成一个整数,使得生成的整数对于一对起始整数是唯一的?
编辑:在面对大量数学问题后,我意识到我应该包括的一个细节是相关键的大小。在原始对中,第一个密钥当前为 6 位,并且可能在系统生命周期内保持 7 位;第二个键尚未大于 20。鉴于这些限制,看起来问题不那么令人生畏了。
【问题讨论】:
-
没有 DBA 应该让您侥幸逃脱 - 如果需要,创建一个主键列并在两列上使用唯一约束
-
查看 Matt Ball 的重复答案
标签: tsql math primary-key uniqueidentifier composite-key