作者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