我正在尝试创建一个过程,该过程将从临时表中获取值,并将它们加载到另一个表中。第二个表在其三列(不包括主键)上有一个复合唯一约束我正在使用合并语句尝试处理上传,并不断收到错误消息,提示消息 2627,级别 14,状态 1,第 13 行
Violation of UNIQUE KEY constraint 'IX_table'.
Cannot insert duplicate key in object 'dbo.table'. The duplicate key value is (aaa, aaa, aaa).
Run Code Online (Sandbox Code Playgroud)
我真的很困惑,因为我使用合并语句的全部原因是为了防止这种情况发生。这是过程的相关部分(名称已更改,并且对临时表的插入已更改)
create table #TempTable(Id int
, str1 varchar(3)
, str2 varchar(15)
, str3 varchar(10))
INSERT INTO #TempTable
(str1
,str2
,str3)
VALUES
('aaa','aaa','aaa'), ('bbb', 'bbb', 'bbb'), ('aaa','aaa','aaa')
MERGE dbo.table AS t
USING #TempTable AS s
ON (t.str1 = s.str1
AND t.str2 = s.str2
AND t.str3 = s.str3)
WHEN MATCHED THEN
UPDATE SET t.str1 = …
Run Code Online (Sandbox Code Playgroud)