SQL Server 2008 MERGEコマンドを使用して、ターゲットテーブルの行に対してソフト削除を実行しようとしています。SQL Server 2008マージソフト削除エラー
ソースには行がないため、ターゲットにはまだそれがあるため、これは「ソースと一致しない場合」セクションに該当するはずです。私がしたいのは、IsActiveビットをfalseに設定することですが、エラーが発生します。
"NULLに設定できない列の値をNULLに設定しようとしています。
私は何が欠けていますか?
Usersテーブルがある:
[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;
何かを試してみてください。 2つの別々の挿入または更新ステートメントにクエリを変換する問題を解決しました..または私は、サイドステップを言わなければならない.. –