[問題] 多隻程式同時寫資料到同一張資料表中

看板C_Sharp作者 (You guess)時間15年前 (2011/03/03 17:39), 編輯推噓1(1012)
留言13則, 2人參與, 最新討論串1/1
資料庫是使用MSSQL 2005 寫入資料庫的程式是用C# 編寫的 要寫入的資料表的PK值是ID值,這個ID值是程式寫資料進資料表時, 系統會自動將ID值加1。 現在遇到的問題是多隻程式同時寫資料到同一張資料表時,有些資料行會只有ID值, 剩下其他的欄位都是空的,或者有ID值及一小部分的欄位有值。 我有在網路上查到,使用transaction,或者在每一隻程式要使用此資料表時, 先將此資料表鎖住,使用完在將此表的控制權釋放。 但是我有看沒有懂,不知道哪裡有實際的例子或程式碼可以觀摩,先謝謝各位 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.123.164.248

03/04 01:20, , 1F
不是 transaction 的問題, 先檢查程式碼
03/04 01:20, 1F

03/04 01:20, , 2F
ID 值程式裡沒有指定, 是交給 MS SQL 產生的沒錯吧
03/04 01:20, 2F

03/04 12:46, , 3F
我沒講清楚,我如果只有一隻程式再寫入資料不會有問題
03/04 12:46, 3F

03/04 12:53, , 4F
但是如果多隻程式同時寫入就會有這個問題
03/04 12:53, 4F

03/04 12:55, , 5F
所以我有上網查,查到上面我提到的兩種方法,看起來應該可
03/04 12:55, 5F

03/04 12:55, , 6F
以解決我的問題
03/04 12:55, 6F

03/04 12:57, , 7F
但是我有看沒有懂,想問一下有沒有實際的例子,或者有其他
03/04 12:57, 7F

03/04 12:57, , 8F
更好的作法,請大家提點一下,謝謝!!
03/04 12:57, 8F

03/04 13:00, , 9F
d大提到的ID値,確實是d大說的那樣,不知道是否這樣做
03/04 13:00, 9F

03/04 13:02, , 10F
會有問題嗎? 還請d大提點一下,謝謝!!
03/04 13:02, 10F

03/04 23:34, , 11F
transaction 可避免讀到改到一半的資料,或準備rollback
03/04 23:34, 11F

03/04 23:34, , 12F
普通的新增一個 row, 沒什麼必要使用 transaction
03/04 23:34, 12F

03/04 23:37, , 13F
索引欄位也是 SQL Server 自動產生的, 不怕重複
03/04 23:37, 13F
文章代碼(AID): #1DRs76cL (C_Sharp)