table1:no num name
-- ---- ------
1 10 a
2 11 b
3 12 c
4 13 d客户端A 和 客户端B同时从数据库中取得字段 num 的最大值, 也就是他们都
得到 num = 13;然后A和B都把 num := num + 1 后,然后再写入(Insert)一条新数据进去。 可
是这个时候他们写入了num = 14. 实际是需要 A.num = 14; b.num = 15
(假设A先提交,B后提交)
大家是怎样保证A,和B写入数据库的num 值不是同一个值??
-- ---- ------
1 10 a
2 11 b
3 12 c
4 13 d客户端A 和 客户端B同时从数据库中取得字段 num 的最大值, 也就是他们都
得到 num = 13;然后A和B都把 num := num + 1 后,然后再写入(Insert)一条新数据进去。 可
是这个时候他们写入了num = 14. 实际是需要 A.num = 14; b.num = 15
(假设A先提交,B后提交)
大家是怎样保证A,和B写入数据库的num 值不是同一个值??
解决方案 »
- 如何用delphi 控制 excel 打开一个 excel 文件(帮帮吧)
- Web Service中的CGI程序问题
- 请教,那里可以下载xp风格的组件?
- 给大家出一道题目吧!看看有什么效率高的解决方法。
- 当我删除listbox的一行后,出现"list index out of bound(x)',该如何解决?谢谢!
- 制作报表浏览器
- 如何检验所有的Edit控件都不空
- 有关权限问题!
- 激活窗口,使其可以接收键盘事件,但不显示在最上层(立马给分)
- 关于列印的问题~QREPORT 不能支持EPSON印表机吗?
- ADO,C/S结构,缓存模式下,怎么返回已修改但尚未UpdateBatch修改前的值?怎么返回已删除但尚未UpdateBatch的字段值?
- 关于读取数据库服务器信息
或者这个事件用事务来处理 在一个事务没有提交的时候 另一个客户端的时候是不可以开始的
‘update table set num = num + 1’
在更新的时候数据库会自动加锁,更新完成后自动解锁,虽然AB读的数相同,但是提交时只会在某个时间接受某个事务