【发布时间】:2018-05-21 10:37:16
【问题描述】:
我正在尝试使用 T-SQL Merge 检查记录是否存在并更新,如果不存在则插入。
更新工作正常,但插入不起作用。
我们将不胜感激地收到任何和所有这方面的帮助。
DECLARE
@OperatorID INT = 2,
@CurrentCalendarView VARCHAR(50) = 'month';
WITH CTE AS
(
SELECT *
FROM dbo.OperatorOption
WHERE OperatorID = @OperatorID
)
MERGE INTO OperatorOption AS T
USING CTE S ON T.OperatorID = S.OperatorID
WHEN MATCHED THEN
UPDATE
SET T.CurrentCalendarView = @CurrentCalendarView
WHEN NOT MATCHED BY TARGET THEN
INSERT (OperatorID, PrescriptionPrintingAccountID, CurrentCalendarView)
VALUES (@OperatorID, NULL, @CurrentCalendarView);
【问题讨论】:
-
看我的回答。您没有正确使用合并。您需要生成一个不匹配的行。它认为没有什么可插入的。
标签: sql sql-server tsql merge