复合可分解的唯一键

时间:2011-11-24 20:21:45

标签: sql sql-server uniqueidentifier

我有一堆表正在加入一个视图。我需要视图中的每个结果行都有一个唯一的id ...不一定是guid,但是一些唯一可以标识每一行的值...而且,可以分解为用于构造每个行的相应主键。独特的价值。

起初我使用的是此处建议的公式: Formula for Unique Hash from Integer Pair

...而且效果很好,但是现在我遇到了Ids可能在整数地址空间之外运行的问题......甚至可能在bigint地址空间之外(略微)运行。

有人可以提出如何解决这个问题的建议(可能是通过创建复合guid而不是数值)?

1 个答案:

答案 0 :(得分:2)

这听起来太简单了,但您是否考虑过创建一个由各种主键组成的varchar字段,可能用某些分隔符分隔?

select 
  cast(tableA.id as varchar) + '-' + 
  cast(tableB.id as varchar)  + '-' + 
  cast(tableC.id as varchar)  as compositeKey, 
  tableA.foo //etc...