经典并发问题

sdts 2006-02-20 12:14:20
开门见山 直接阐述问题
-----------------------
一个数据库表Test,只允许写进5条记录,满5条后就不再写进,我的方法是在写的时候先查询一下有多少记录,可是这样的话,如果当已有4条记录后有两个人在同一时刻写数据库的话(重点是同一时刻),这时他们查询的记录都是4条,就都写进来了,最后就有6条记录了.

不知道我的问题阐述清楚了没有,有什么方法解决这个问题?
谢谢
...全文
182 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
flying0108 2006-03-01
  • 打赏
  • 举报
回复
悲观锁定
jspadmin 2006-03-01
  • 打赏
  • 举报
回复
你游标类型选的是1,3还是其他?
jspadmin 2006-03-01
  • 打赏
  • 举报
回复
那么你现在有碰到过这样的情况吗?比如说写入了超过5个以上的记录?
我个人认为,很难得碰到这样的情况。除非非常多用户同时做这样的操作。
sdts 2006-03-01
  • 打赏
  • 举报
回复
"我的方法是在写的时候先查询一下有多少记录"

jspadmin说得和我的不一样吗?

关键是写最后一条的时候如果是同时写进的话,就都会被接受,因为他们插入之前查询的都是4条记录
jspadmin 2006-02-28
  • 打赏
  • 举报
回复
选择正确的游标类型。
而且,你的思路有问题,你是要实现只允许数据库写5条记录,那么你应该是在做写操作时检查数据库,而不是用户查询。
你只要在写入前检查数据库是否已经满5条就行了,是的话,就返回并提示用户,否则写入。
xisuo9527 2006-02-28
  • 打赏
  • 举报
回复
看看这样行么
conn.Execute("insert into Email with(updlock)(Email,IP) Values('"&email&"','"&ip&"')")
sdts 2006-02-28
  • 打赏
  • 举报
回复
up
sdts 2006-02-21
  • 打赏
  • 举报
回复
艾 请问大哥门更新时怎么锁定啊?????????

sujinlin(秋色的记忆) 的方法不行,我需要严格限制只有5条记录,因为处理的是客户需求,不能人家提交过来了,然后你说我把你的记录删了(就要限制他不让他提交)
sdts 2006-02-20
  • 打赏
  • 举报
回复
请问具体怎么写

我的插入代码
conn.Execute("insert into Email(Email,IP) Values('"&email&"','"&ip&"')")
KimSoft 2006-02-20
  • 打赏
  • 举报
回复
用ADO锁定类型可以控制。
sdts 2006-02-20
  • 打赏
  • 举报
回复
access
ervinlj 2006-02-20
  • 打赏
  • 举报
回复
楼主用的是什么数据库?
sujinlin 2006-02-20
  • 打赏
  • 举报
回复
我有个偷懒的办法,比如你要的是数据库中5条数据

你可以让数据库中存在10条数据

每次你读出来的都是最后5条,读取的同时删除最后5条以外的其他数据。
Hellohuan 2006-02-20
  • 打赏
  • 举报
回复
更新时锁定

+up +jf

--------------------
我用ASP写的技术社区:
http://udclub.com/cn/community/default.html
net205 2006-02-20
  • 打赏
  • 举报
回复
http://dev.csdn.net/article/24/24978.shtm
sdts 2006-02-20
  • 打赏
  • 举报
回复
up

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧