【发布时间】:2016-06-12 10:10:42
【问题描述】:
我正在使用以下语句来更新/插入记录。问题是我已经给出了条件SOURCE.Name IS NOT NULL,但我仍然在插入语句中收到错误消息:
无法将值 NULL 插入到列“名称”、表“TEST2”中;列不允许空值。更新失败。
那是因为在 TARGET 表的 Name 列上有一个 NOT NULL 约束。我只是不想插入任何包含 NULL 作为名称的记录。另外,我也不想更新 TAGRET 表中 Name 为 NULL 的任何行。
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);
【问题讨论】:
标签: sql sql-server sql-server-2012