我有一堆表正在加入一个视图。我需要视图中的每个结果行都有一个唯一的id ...不一定是guid,但是一些唯一可以标识每一行的值...而且,可以分解为用于构造每个行的相应主键。独特的价值。
起初我使用的是此处建议的公式: Formula for Unique Hash from Integer Pair
...而且效果很好,但是现在我遇到了Ids可能在整数地址空间之外运行的问题......甚至可能在bigint地址空间之外(略微)运行。
有人可以提出如何解决这个问题的建议(可能是通过创建复合guid而不是数值)?
答案 0 :(得分:2)
这听起来太简单了,但您是否考虑过创建一个由各种主键组成的varchar字段,可能用某些分隔符分隔?
select
cast(tableA.id as varchar) + '-' +
cast(tableB.id as varchar) + '-' +
cast(tableC.id as varchar) as compositeKey,
tableA.foo //etc...