(急)DELPHI 操作 SQL 2000 数据库 并发问题?了解并发处理的高手们进来帮帮忙!

kinsunc 2004-11-30 09:02:37
在开发一个库存管理里程序里,碰上了并发扣库存的问题!

因考虑到程序本身的一些处理问题,没有使用触发器和存储过程。


正常在触发器和存储过程里。都很容易使用这个功能。
===================================================================
事务开始
1.先定设置锁定超时时间为3000毫秒。
2.用select * from 库存表 WITH(XLOCK) where .....进行锁定某个记录。
....

事务提交
如果错误则回滚事务。
===================================================================

请问,如何在delphi 的adoQuery控件中使用 MSSQL2000 查询锁定 的功能 。



...全文
180 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
sheepchang 2004-12-01
  • 打赏
  • 举报
回复
新建DELPHI群7322920欢迎大家加入,一起提高!
seekuface 2004-12-01
  • 打赏
  • 举报
回复
回复人: Firec(Firec) ( ) 信誉:90 2004-12-01 12:41:00 得分: 0


并发扣库存?我一般喜欢使用临时查询上传,或者建立单独的上传线程。





可否谈一下你的作法?我听得不是很懂……

另,建一个临时表来设置信号的方式不是很好,弊端很多……
使用语句强行锁定的方法也有执行限制……
不过我觉得还是不要使用这种比较好一点。
Firec 2004-12-01
  • 打赏
  • 举报
回复
并发扣库存?我一般喜欢使用临时查询上传,或者建立单独的上传线程。
seekuface 2004-12-01
  • 打赏
  • 举报
回复
要想数据库的并发冲突降低,必须使每个占用的时间片足够小……
在你这种情况下,发生冲突是必然的事……
seekuface 2004-12-01
  • 打赏
  • 举报
回复
照MS的说法,并不建议你使用手动加锁……
你这种问题,个人觉得最好还是使用存贮过程来解决……
另,你设置的超时时间也太长,在数据频繁使用时会影响到其他的工作的……
xx_adam 2004-12-01
  • 打赏
  • 举报
回复
锁定分为数据库级锁定、表级锁定和记录级锁定具体实现你找一下相关的资料吧!
zglwxb 2004-12-01
  • 打赏
  • 举报
回复
关注
kinsunc 2004-12-01
  • 打赏
  • 举报
回复
未能解决问题,继续求助!.....等待中。。。。。
见丰 2004-12-01
  • 打赏
  • 举报
回复
受教
smiler007 2004-11-30
  • 打赏
  • 举报
回复
在数据集的BeforePost事件中
AdoConnection1.BeginTrans;

在AfterPost事件中
AdoConnection1.CommitTrans;

在数据集的PostError事件中
AdoConnection1.RollbackTrans;
Action:=daAbort;
kinsunc 2004-11-30
  • 打赏
  • 举报
回复
这样不行
RockEx 2004-11-30
  • 打赏
  • 举报
回复
你是锁定某个表还是锁定某个记录?
如果只有表的话可以建一个表
表结构如下:
TableName varchar(250)
Locked char(1) 默认值 0
以读取一个表的记录时首先查看这个表相对应的Locked是否为1,为1表示该表已被锁定
对该表数据处理完之后要记得将该表相对应的Locked赋为0
........

2,495

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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