关于MERGE,唯一索引问题,求解!
merge 唯一索引 insert
IF OBJECT_ID('ta') IS NOT NULL
DROP TABLE ta
CREATE TABLE ta(id int)
INSERT INTO ta
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1
IF OBJECT_ID('tb') IS NOT NULL
DROP TABLE tb
CREATE TABLE tb(id int)
--唯一索引,忽略重复
CREATE UNIQUE INDEX idx_id ON tb(id) WITH(IGNORE_DUP_KEY=on)
MERGE INTO TB AS B
USING ta AS A ON A.id=B.id
WHEN NOT MATCHED THEN
INSERT(id) values(A.id);
--这里直接报错了,很诧异,为什么?
/*
(5 行受影响)
消息 2601,级别 14,状态 1,第 19 行
不能在具有唯一索引 'idx_id' 的对象 'dbo.tb' 中插入重复键的行。
语句已终止。
*/
DROP TABLE ta
DROP TABLE TB