我正在使用下面的語句來更新/插入記錄。問題是我已經給出的條件SOURCE.Name IS NOT NULL
,但我仍然得到一個錯誤的插入語句說:MERGE插入NULL記錄也
無法將NULL值插入列「名稱」,表「TEST2」;列不允許有空值。更新失敗。
而這是因爲在TARGET表的名稱列上有一個NOT NULL
約束。我只是不想插入任何包含NULL作爲名稱的記錄。另外,我也不想更新名稱爲NULL的TAGRET表中的任何行。
MERGE TEST2 AS TARGET
USING TEST1 AS SOURCE
ON TARGET.ID = SOURCE.ID
AND SOURCE.Name IS NOT NULL
WHEN MATCHED THEN
UPDATE SET ID=SOURCE.ID,
Name= SOURCE.Name,
City= SOURCE.City,
State = SOURCE.State
WHEN NOT MATCHED THEN
INSERT (ID, Name, City, State)
VALUES(SOURCE.ID, SOURCE.Name, SOURCE.City, SOURCE.State);
感謝您的答覆馬丁。如果我不想更新NULL中SOURCE表中Name的記錄,那麼我還需要在這裏放置相同的子句? 當匹配和SOURCE.Name不是NULL – Newbie
@Newbie我只是注意到了這一點。你可以做到這一點,但看到我的編輯更好的方式。 –