SQL Server: дубликат ключа от создания уникального индекса - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть таблица котировок акций и дат:

StockID QuoteID QuoteDay    QuoteClose
---------------------------------------
5         95    2018-01-03    1.080
5         96    2018-01-04    1.110
5         97    2018-01-05    1.000
5         98    2018-01-06    1.030
5         99    2018-01-07    1.010
5        100    2018-01-08    0.899
5        101    2018-01-09    0.815

Я создаю кластерный индекс для манипулирования данными, но сталкиваюсь с дублирующимися ошибками ключа с индексом

CREATE UNIQUE CLUSTERED INDEX MACD_IDX ON #TBL_MACD_LOOP (StockId, QuoteId)

Различные комбинации StockID и QuoteID приведут к одному и тому же выводу:

Например, (StockID, QuoteID) из (5, 11) и (51, 1) оба дают индекс 511.

Мое решение - добавить "-" между StockId и QuoteId.

Теперь (5, 11) производит 5-11, а (51, 1) производит 51-1.

Как объединить строки со значениями?

1 Ответ

0 голосов
/ 29 апреля 2018

Нет, вы определенно ошибаетесь .

Комбинации для (StockId, QuoteId) из (5, 11) и (51, 1) являются двумя РАЗЛИЧНО разными парами значений.

Они НЕ объединены в одно значение (как вы предполагаете * 1014) при создании записи индекса. Это два разных значения и поэтому могут сосуществовать в этой таблице - нет проблем.

Чтобы доказать это - просто запустите INSERT оператор:

INSERT INTO #TBL_MACD_LOOP(StockId, QuoteId, QuoteDay, QuoteClose)
VALUES (5, 11, '20180505', 42.76), (51, 1, '20180505', 128.07)

Даже с вашим уникальным индексом это INSERT работает без каких-либо проблем (если, конечно, в вашей таблице еще нет одной из этих двух пар значений)

...