作者nckumfc (You guess)
看板C_Sharp
標題[問題] 多隻程式同時寫資料到同一張資料表中
時間Thu Mar 3 17:39:16 2011
資料庫是使用MSSQL 2005
寫入資料庫的程式是用C# 編寫的
要寫入的資料表的PK值是ID值,這個ID值是程式寫資料進資料表時,
系統會自動將ID值加1。
現在遇到的問題是多隻程式同時寫資料到同一張資料表時,有些資料行會只有ID值,
剩下其他的欄位都是空的,或者有ID值及一小部分的欄位有值。
我有在網路上查到,使用transaction,或者在每一隻程式要使用此資料表時,
先將此資料表鎖住,使用完在將此表的控制權釋放。
但是我有看沒有懂,不知道哪裡有實際的例子或程式碼可以觀摩,先謝謝各位
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.123.164.248
1F:→ danielguo:不是 transaction 的問題, 先檢查程式碼 03/04 01:20
2F:→ danielguo:ID 值程式裡沒有指定, 是交給 MS SQL 產生的沒錯吧 03/04 01:20
3F:→ nckumfc:我沒講清楚,我如果只有一隻程式再寫入資料不會有問題 03/04 12:46
4F:→ nckumfc:但是如果多隻程式同時寫入就會有這個問題 03/04 12:53
5F:→ nckumfc:所以我有上網查,查到上面我提到的兩種方法,看起來應該可 03/04 12:55
6F:→ nckumfc:以解決我的問題 03/04 12:55
7F:→ nckumfc:但是我有看沒有懂,想問一下有沒有實際的例子,或者有其他 03/04 12:57
8F:→ nckumfc:更好的作法,請大家提點一下,謝謝!! 03/04 12:57
9F:→ nckumfc:d大提到的ID値,確實是d大說的那樣,不知道是否這樣做 03/04 13:00
10F:→ nckumfc:會有問題嗎? 還請d大提點一下,謝謝!! 03/04 13:02
11F:推 danielguo:transaction 可避免讀到改到一半的資料,或準備rollback 03/04 23:34
12F:→ danielguo:普通的新增一個 row, 沒什麼必要使用 transaction 03/04 23:34
13F:→ danielguo:索引欄位也是 SQL Server 自動產生的, 不怕重複 03/04 23:37