sql-server-2012 - SQL Server:创建唯一索引的重复键
问题描述
我有一张股票报价表和日期:
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
。
如何将字符串与值结合起来?
解决方案
不,你肯定弄错了。
(StockId, QuoteId)
of(5, 11)
和的组合(51, 1)
是两个截然不同的值对。
创建索引条目时,它们不会组合成单个值(如您所假设的)。511
这是两个不同的值,因此可以在该表中共存 - 没问题。
为了证明这一点 - 只需运行以下INSERT
语句:
INSERT INTO #TBL_MACD_LOOP(StockId, QuoteId, QuoteDay, QuoteClose)
VALUES (5, 11, '20180505', 42.76), (51, 1, '20180505', 128.07)
即使您的唯一索引到位,这INSERT
也完全没有任何问题(当然,假设您的表中还没有这两对值之一)
推荐阅读
- python - 如何填充 matplotlib 直方图的中心 95% 置信区间?
- python - 在 matplotlib 中制作表格
- python - 并行处理中的迭代
- django - 我无法登录 Django 管理员登录页面
- javascript - Vue js文本添加动画
- c++ - 在 WinPE 下从网络摄像头捕获?
- python - 查找所有使用 `print` 但没有 `from __future__ import print_function` 的文件
- python - 如何使用 python spark 将多个数据集合并为一个完整的大数据集?
- java - Android - 通过 ping url 地址检查互联网连接
- microsoft-graph-api - Microsoft Graph-Delete planner task-Resource not found for the segment (ETag)?