平时有考虑数据冲突吗?如一个BBS可能两个人同时在改贴子~好像都没什么处理的嘛~( BBS中两个人同时修改一个贴子的可能性比较小)
解决方案 »
- 计算器中怎样使用键盘事件
- webrequest或webclient能否发送本地IP地址到目标页面?
- 正则表达式遇到问题,高手进
- 我打不开项目怎门办啊。
- c#web编程中怎么实现在.aspx文件里实现循环显示html代码
- HTTP Error 404 - File or directory not found.
- 庆新论坛开张,并首次提问,放分200,问题是,C#中对串口操作最简单的方法是什么?
- 发现了有趣的现象,请问为什么???
- 浏览器internet选项设置问题……(高分赠送!高手请进!!)
- C#中如何实现文件系统列表
- 如何遍历一个类当前在内存中创建的所有实例?
- 把一个用C#写的windows应用程序显示在任务栏
对于程序来讲,同时打开一个帖子修改是可能的,但是存入数据库时肯定是有先后的,以最后一个为准
我觉得这样是不合理的.
如表Table1有字段是F1, F2, F3。其中字段F1是主键,需要将字段F2的值由A改为B,则应写为
UPDATE Table1 SET F2 = 'B' WHERE F1=xxx AND F2='A'。 语句执行完成后,再判断有没有更新到数据,若一行都没有,则表示数据已被其他人修改,则提醒用户。
你的方法应该是可行的~@Sorder互斥变量在每次update时都建立吗?互斥变量在什么时候撤消呢?
我觉得这样可能不行
每条记录设置一个LastMoifyDateTime字段,
A,B读的时候都读取LastMoifyDateTime
A用户Upate时条件为where ID=@ID and LastMoifyDateTime = @LastMoifyDateTime,这时这个条件是成立的.同时A要 把LastMoifyDateTime 进行更新
这样当B用户提交时where Key=@Key and LastMoifyDateTime = @LastMoifyDateTime,这时这个条件就不成立了,因为数据库里的LastMoifyDateTime已经被A更改过了,@@rowcount应该=0,通知用户就可以了这样写和efly75的方法比较:
我的方法缺点:多一个字段,浪费宝贵的数据库资源.
我的方法优点:当一个表的字段很多时我的方法就有优势了,按efly75的方法要where f1=@ and f2=@f2 and f3 =@f3 and .... 这个条件可能会很长,这样就太复杂了点.