現在、SQL Server 2012のT-SQLストアドプロシージャで作業しています。別のテーブルのテーブルエントリに更新または挿入しようとしています。TSQL UPDATEまたはINSERT INTOテーブルのテーブル
現在、元のテーブルに1つのエントリしかない場合は、1レコードしか更新できません。インポートするテーブルから10個のエントリを取得したら、1個のエントリを更新し、残りの9個のレコードをテーブルに追加したいと思います。
一時表(新しい値)
#tmpDelivery (VersionId INT, DeliveryModelId INT)
配達表(更新すべき元、)
[MySchema].[Delivery] (DeliveryId INT, DeliveryModelId INT, VersionId INT)
私の現在のスクリプトは次のようになります。どういうわけか
UPDATE [MySchema].[Delivery]
SET DeliveryModelId = [D].DeliveryModelId
FROM #tmpDelivery [D]
WHERE [MySchema].[Delivery].VersionId = 1
AND [D].VersionId = [MySchema].[Delivery].VersionId
IF @@ROWCOUNT = 0
INSERT INTO [MySchema].[Delivery] ([DeliveryModelId], [VersionId])
SELECT DeliveryModelId, VersionId
FROM #tmpDelivery
このクエリ正しく動作しません。たとえば、1つのエントリが存在する場合は、1エントリしか更新されません。
この問題の解決方法をご存知ですか?
ありがとうございました!
この場合、なぜ「MERGE」文を使用しないのですか? –