SQL 服务器:创建唯一索引的重复键
SQL Server : duplicate key from creating unique index
我有 table 个股票报价和日期:
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
的不同组合将产生相同的输出:
例如 (5, 11)
的 (StockID, QuoteID)
和 (51, 1)
都产生了 511
的索引。
我的解决办法是在StockId和QuoteId之间加上“-”。
现在 (5, 11)
生成 5-11
,(51, 1)
生成 51-1
。
如何将字符串与值结合起来?
不对,你肯定看错了。
(5, 11)
和 (51, 1)
的 (StockId, QuoteId)
的组合是 两个截然不同的 值对。
在创建索引条目时,它们 未合并 为单个值(如您假设的 511
)。这些是 两个不同的值,因此可以共存 table - 没问题。
为了证明这一点 - 只是 运行 这个 INSERT
声明:
INSERT INTO #TBL_MACD_LOOP(StockId, QuoteId, QuoteDay, QuoteClose)
VALUES (5, 11, '20180505', 42.76), (51, 1, '20180505', 128.07)
即使您的唯一索引就位,这个 INSERT
也可以毫无问题地工作(假设您的 table 中还没有这两对值之一,当然)
我有 table 个股票报价和日期:
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
的不同组合将产生相同的输出:
例如 (5, 11)
的 (StockID, QuoteID)
和 (51, 1)
都产生了 511
的索引。
我的解决办法是在StockId和QuoteId之间加上“-”。
现在 (5, 11)
生成 5-11
,(51, 1)
生成 51-1
。
如何将字符串与值结合起来?
不对,你肯定看错了。
(5, 11)
和 (51, 1)
的 (StockId, QuoteId)
的组合是 两个截然不同的 值对。
在创建索引条目时,它们 未合并 为单个值(如您假设的 511
)。这些是 两个不同的值,因此可以共存 table - 没问题。
为了证明这一点 - 只是 运行 这个 INSERT
声明:
INSERT INTO #TBL_MACD_LOOP(StockId, QuoteId, QuoteDay, QuoteClose)
VALUES (5, 11, '20180505', 42.76), (51, 1, '20180505', 128.07)
即使您的唯一索引就位,这个 INSERT
也可以毫无问题地工作(假设您的 table 中还没有这两对值之一,当然)