有時候為了避免資料庫中相同的資料重複新增,因此早期的作法是先select count看看有沒有資料,如果有就update,沒有就insert,這樣就可以避免上述的情況。
這樣是一種方式沒有錯,但其實有更佳的方式那就是使用merge語法,本篇介紹的是在Oracle中怎麼做,其他資料庫也有支援喔。
MERGE TableA AS target
USING ( SELECT @sid, @column1, @column2 ) AS source
ON target.[sid] = source.[sid]
WHEN MATCHED THEN
UPDATE SET target.[column1] = source.[column1],target.[column2] = source.[column2]
WHEN NOT MATCHED THEN
INSERT([sid], [column1], [column1]) VALUES(source.[sid], source.[column1], source.[column1]);
至於例子中的@sid ,在C Sharp中當然就是用Parameters.AddWithValue的方式去帶入了喔。