我有以下SP,
MERGE INTO DeviceCatalog DC
USING (SELECT @UniqueID AS UniqueID) T ON (DC.UniqueID = T.UniqueID)
WHEN MATCHED THEN
UPDATE
WHEN NOT MATCHED THEN
INSERT
WHEN NOT MATCHED THEN
IF(Condition)
BEGIN
EXEC DeleteDeviceID;
END;
我不知道如何使这项工作?请帮忙
更新:我能够做到这一点,
MERGE INTO DeviceCatalog DC
USING (SELECT @UniqueID AS UniqueID) T ON (DC.UniqueID = T.UniqueID)
WHEN MATCHED THEN
UPDATE
WHEN NOT MATCHED THEN
INSERT
WHEN NOT MATCHED THEN
DELETE WHERE [UniqueID] = @OldUniqueID;
END
但只有删除声明才会抱怨。
答案 0 :(得分:1)
MERGE语句的“WHEN NOT MATCHED”子句不支持删除。你必须使用'当不匹配来源'时。
MERGE INTO DeviceCatalog DC
USING (SELECT @UniqueID AS UniqueID) T ON (DC.UniqueID = T.UniqueID)
WHEN MATCHED THEN
UPDATE SET col1='somevalue'
WHEN NOT MATCHED THEN
INSERT INTO article (UniqueID) VALUES 'somevalue'
WHEN NOT MATCHED BY SOURCE AND UniqueID = @OldUniqueID THEN
DELETE;
答案 1 :(得分:0)
MERGE INTO DeviceCatalog DC
USING (SELECT @UniqueID AS UniqueID) T ON (DC.UniqueID = T.UniqueID)
WHEN MATCHED THEN
UPDATE [write what you hav to update]
WHEN NOT MATCHED THEN
INSERT [write what to insert]
WHEN NOT MATCHED THEN
DELETE WHERE [UniqueID] = @OldUniqueID;
END