Я пытаюсь выполнить мягкое удаление в строке в моей целевой таблице с помощью команды MERGE SQL Server 2008.Ошибка SQL Server 2008 Merge Soft Delete
Я думаю, что это должно подпадать под раздел «когда не соответствует источнику», так как источнику не хватает строки, а цель все еще имеет его. Все, что я хочу сделать, это установить бит 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 является:
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;
У меня та же проблема. Преобразование запроса в два отдельных оператора вставки или обновления разрешило проблему. Или я должен сказать, перешагнул ее. –