多用户操作同一功能,请教???(20)

  • 主题发起人 主题发起人 admin2008
  • 开始时间 开始时间
A

admin2008

Unregistered / Unconfirmed
GUEST, unregistred user!
如大型医院,有多个人同时操作挂号功能, 而挂号是生成挂号单号,问题是:在前面一个人还没有保存时,另一个也挂号,这时后面一个人保存挂号单就会出错,请问大家是怎么解决多用户操作同一窗口而不互相冲突呢??
 
这不是同一窗口的问题,而是数据库处理的问题,使用存储过程就行了
 
用seq就好了吧。。或者最后点击保存的时候才生成单号
 
并发问题,当然要搞流水号了。在oracle库中就有设置seq的,其他库可以参照。
 
并发问题要控制好。
 
我用的是SQL 2000 那怎么控制并发问题呢??
 
自增类型的数据
 
能不能说详细点哟??? 谢谢!!!
 
队列,可以建立一个业务线程专门搞数据库的修改问题
 
建一个临时生成序号的服务器并存入数据库,所有用户都调用生成序号的服务器,让生成序号的服务器返回的没使用的
 
保存的时候再生成单号,再加上事务处理
 
我觉得可以这样:每次点击 生成挂号的时候,先生成一个空单子,如果没有保存的时候退出,直接删除之,否则更新update
 
如果流水号就1条语句产生max(id)的话 锁定就可以了,如果是多条语句得到最后的流水号可以分2种方法1、信号灯模式,建立一配置字段opid ,程序流程如下 repeat 如果opid 字段为空 就更新为本操作员ID 取opid字段值 判断 opid 值 是不是等于本操作员ID 是的话 取值得到最大流水号加1 写库 更新opid 为空 end 这个模式怕锁死,比如一台操作机刚更新完opid就死机重起了,那么所有人都动不了,所以这个模式需要在服务器上挂一个监控程序,30秒opid值还没变的话就清空,2、流水号才用操作员号+流水 比如 001 操作员 登录 0010000001,001000002 如果是002 登录他的流水号就是002000001,002000002 这样就不会出错也方便,
 
生成挂号单号,放到数据存储过程中,在提交数据时,对挂号单号进行检索+1,存储,不就可以解决了吗?
 
后退
顶部