私はマージする新たなんだ - 私は働くMERGE文を持っている:MERGE "Upsert"が挿入または更新されているかどうかを確認する方法?
merge customers with (holdlock) as c
using (select @id as id) as new_id
on c.contactid = new_id.id
when matched then
update set ContactID = 1, firstname = CAST(SYSDATETIME() AS VARCHAR(100))
when not matched then
insert(ContactID) values(1), firstName = 'b';
(SQLは本当に問題ではありません - これはテスト目的であった)
私の質問は - どのように私はできました挿入または更新が起こったかどうかを示す何かを返しますか?
CreatedDateとModifiedDateのようにテーブルに2つの列を作成できます。挿入が行われたときのマージで、CreatedDate列にGetDate()を挿入します。更新が発生すると、GetDate()としてModifedDateが設定されます。 ModifedDate列がnullの場合は挿入のみが発生したことを意味し、値がある場合は更新されることを意味します。 – observer
がありますが、これはスキーマの変更を必要としないため、下の回答が優れているようです。 – niico
これらのdriveby原因不明のdownvotesを愛する必要があります。 – niico