请教高手有关联网售票的问题.

yourkith 2000-06-01 09:30:00
C/S两层模式.几十个售票点拨号连接到ORACLE8数据库出售演出票,允许购票者指定座位
的类别,区段.这样很容易出现'抢票'的情况,即几个售票点同时选到某张未出售的票而去
修改它的状态为已售.其中一个在修改时,其他点必须等待其完成.如果这个点UPDATE
后COMMIT之前异常死机,其他点无法退出等待.如果这个点修改成功了.其他点会接着修改
而导致一张票被出售多次.有什么好的解决办法?
...全文
117 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yourkith 2000-06-01
  • 打赏
  • 举报
回复
eaglet,数据库代理程序是什么东西?是三层结构中的application server吗?
thinking_man 2000-06-01
  • 打赏
  • 举报
回复
你在ORACLE8中来实现对事务的处理,并且有个返回值,客户端根据返回值来判断是否成功提交。这样试试不知行不行?
eaglet 2000-06-01
  • 打赏
  • 举报
回复
解决这类问题的最理想方法是在服务器侧做一个数据库代理程序
客户端所有修改数据库的操作都通过数据库代理程序来完成,这样
就可以在代理上控制以上问题了.
如果你想在目前结构上设计,可以
在数据库中加一个记录每张票访问情况的表
在修改票的状态前先将票的访问情况标志写成
正在访问.
具体方法
写一个事物,在事物的开始先查上述标志,如果
标志为未访问,则修改为正访问,如果为正访问
则退出.
Axiong 2000-06-01
  • 打赏
  • 举报
回复
用lock就行了
zyc 2000-06-01
  • 打赏
  • 举报
回复
Oracle中有冲突处理办法:
在一个点处理某张票时(从读出到修改),锁定相应的记录,只有在此售票不再要那一张票的信息时,才可以将相应的记录解锁。
如果你确得还是难理解,可以找一本有关操作系统或是有关网络数据库的书籍来看看。那里面肯定说得很明白。当然这个工作得在Server(Application server)端完成。

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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