INSERT or UPDATE
或者有人稱 Upsert
,是一個撰寫資料庫存取應用程式一定會遇到的場景,這個看起來簡單不過的寫入資料邏輯,到了實際真正要施作的時候,是有一些細節需要去注意的,下面我就我所知道的三種 INSERT or UPDATE 的寫法跟各位朋友分享。
[小菜一碟] 適用 SQL Server 的三種單筆資料 INSERT or UPDATE(Upsert)的寫法
- 9136
- 0
- SQL Server
- 2021-10-14
INSERT or UPDATE
或者有人稱 Upsert
,是一個撰寫資料庫存取應用程式一定會遇到的場景,這個看起來簡單不過的寫入資料邏輯,到了實際真正要施作的時候,是有一些細節需要去注意的,下面我就我所知道的三種 INSERT or UPDATE 的寫法跟各位朋友分享。
有時候我們會需要額外記錄剛剛刪除或更新的資料,又或者是取得剛剛新增的識別(IDENTITY)欄位的值,拿來當成其他的 SQL 語句的參數,這些事情在 SQL Server 我們都可以透過 OUTPUT
語法幫助我們輕鬆做到。
Windows Forms 的 DataGridView 開啟編輯資料之後,我們就可以在畫面上直接對資料進行修改,預設的統一操作行為是修改完資料之後,按下 Enter 鍵或是離開該儲存格,資料就會更新到綁定的 DataSource 上,就像下面這樣:
但是呢,使用者會希望能在修改之後立即更新到 DataSource,不要再多敲 Enter 鍵或離開儲存格的動作,尤其是 ComboBox,我們來看一下怎麼弄?
先前有介紹過用 SqlBulkCopy 快速批次 Insert 大量資料,心裡想說既然快速批次 Insert 大量資料有 SqlBulkCopy,那我要快速批次 Update 大量資料有沒有類似於 SqlBulkCopy 的東西可以用?很可惜,可能是我孤陋寡聞,遍尋不著可以像 SqlBulkCopy 這麼相對容易操作的工具,不過我倒是有找到替代方案,速度上也可以接受,我把整個實作的過程做個記錄,以利往後參考。