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