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