MERGE 実行の最初の試みでは、エラーは発生していませんが、希望どおりにデータをマージしていません。誰が私が間違っているのか教えてもらえますか? ポイントは、#Temp と #tblCollectionGameList を比較し、#Temp 内のアイテムのみが含まれるように #tblCollectionGameList を更新することです (不足しているアイテムを tblCollecitonGameList に挿入し、もはや #Temp にないアイテムを tblColletionGameList から削除します)。
CREATE TABLE #Temp
(
CollectionID smallint NOT NULL,
IncludedSectionID smallint NOT NULL
)
INSERT INTO #Temp (CollectionID, IncludedSectionID) VALUES(0, 0);
INSERT INTO #Temp (CollectionID, IncludedSectionID) VALUES(0, 1);
SELECT * FROM #Temp;
CREATE TABLE #tblCollectionGameList
(
ID smallint IDENTITY(0,1) NOT NULL,
CollectionID smallint NOT NULL,
IncludedSectionID smallint
)
INSERT INTO #tblCollectionGameList (CollectionID, IncludedSectionID) VALUES(0,0);
INSERT INTO #tblCollectionGameList (CollectionID, INcludedSectionID) VALUES(0,2);
SELECT * FROM #tblCollectionGameList;
BEGIN TRAN
MERGE #tblCollectionGameList AS t
USING #Temp AS s
ON (t.CollectionID = s.CollectionID)
WHEN NOT MATCHED BY TARGET
THEN
INSERT(CollectionID, IncludedSectionID) VALUES (s.CollectionID, s.IncludedSectionID)
WHEN NOT MATCHED BY SOURCE
THEN
DELETE;
SELECT * FROM #tblCollectionGameList;
ROLLBACK TRAN
DROP TABLE #Temp;
DROP TABLE #tblCollectionGameList;