Я пытаюсь выполнить мягкое удаление строки в моей целевой таблице с помощью команды MERGE SQL Server 2008.
Я думаю, что это должно попадать в раздел "когда не сопоставлено по источнику", поскольку в источнике отсутствует строка, а у цели все еще есть. Все, что я хочу сделать, это установить для бита IsActive значение false, но я получаю сообщение об ошибке.
"Попытка установить для столбца, не поддерживающего NULL, значение NULL."
Чего мне не хватает?
Таблица пользователей:
[ID] [nvarchar](50) NOT NULL,
[FirstName] [nvarchar](200) NULL,
[LastName] [nvarchar](200) NULL,
[EmailAddress] [nvarchar](200) NULL,
[IsActive] [bit] NOT NULL
Оператор слияния:
merge into Users
using TempUserTable lu
on Users.ID = TempUserTable.ID
when matched then
update set
ID = lu.ID,
FirstName = lu.FirstName,
LastName = lu.LastName,
EMailAddress = lu.EmailAddress,
IsActive = lu.Status
when not matched then
insert (ID, FirstName, LastName, EmailAddress, IsActive)
values (lu.ID, lu.FirstName, lu.LastName, lu.EmailAddress, lu.Status)
when not matched by source then
update set IsActive = 0;