这是我无法抗拒的另一个错误:
我正在尝试从WHID字段添加(INSERT INTO sql语句)唯一记录 (ClientEpisode表)插入WHID字段(EHREpisode表):
INSERT INTO
[WH].[Fact].EHREpisode ([WHID])
SELECT
[HP].[bhcms5].ClientEpisode.WHID
FROM
[HP].[bhcms5].ClientEpisode
WHID字段在两个表中以及彼此之间都是唯一的(不可重复),但是我一直遇到错误:
Plz,请以较大的字母查看错误消息:
“ 无法在对象'Fact.EHREpisode'中插入具有唯一索引'IX_EHREpisode'的重复键行。重复键值为(NULL,NULL>)。 该语句已终止。”
下面是我的表结构:
答案 0 :(得分:2)
错误消息似乎说明了NULL
值是罪魁祸首(您的屏幕截图很难看清)。因此,您可以尝试从插入中排除NULL
个值:
INSERT INTO [WH].[Fact].EHREpisode ([WHID])
SELECT [HP].[bhcms5].ClientEpisode.WHID
FROM [HP].[bhcms5].ClientEpisode
WHERE [HP].[bhcms5].ClientEpisode.WHID IS NOT NULL;
或者,考虑在WHID
上使用忽略NULL
值的索引:
CREATE UNIQUE NONCLUSTERED INDEX idx_col1
ON [HP].[bhcms5].ClientEpisode (WHID)
WHERE WHID IS NOT NULL;
答案 1 :(得分:1)
错误非常明显:存在一个名为IX_EHREpisode
的唯一索引,其中的列使您的查询尝试两次插入值(null,null)。
您已向我们提供了一组与此无关的SSMS GUI图片。相反,使用GUI的方式将是:
IX_EHREpisode
。打开它。因此,您将不得不修改索引或重新考虑您的查询。