Композитный разложимый уникальный ключ - PullRequest
0 голосов
/ 25 ноября 2011

У меня есть несколько таблиц, к которым я присоединяюсь в виде. Мне нужно, чтобы каждая результирующая строка в представлении имела уникальный идентификатор ... не обязательно guid, но некоторое значение, которое однозначно может идентифицировать каждую строку ... и, кроме того, может быть разложено на соответствующие первичные ключи, которые использовались для построения уникальное значение.

Сначала я использовал формулу, предложенную здесь: Формула для уникального хэша из целочисленной пары

... и это сработало, но теперь я столкнулся с проблемой, что идентификаторы могут работать за пределами целочисленного адресного пространства ... и даже могут (немного) работать за пределами адресного пространства bigint.

Может ли кто-нибудь подсказать, как обойти эту проблему (возможно, путем создания составной направляющей вместо числового значения)?

1 Ответ

2 голосов
/ 25 ноября 2011

Это звучит почти слишком просто, но рассматривали ли вы просто создание поля varchar, состоящего из различных первичных ключей, возможно, разделенных каким-либо разделителем?

select 
  cast(tableA.id as varchar) + '-' + 
  cast(tableB.id as varchar)  + '-' + 
  cast(tableC.id as varchar)  as compositeKey, 
  tableA.foo //etc...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...