您的位置:程序门 -> vb -> 数据库(包含打印,安装,报表)



关于sql语句中max函数的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


关于sql语句中max函数的问题
发表于:2007-12-11 08:57:46 楼主
一个人员管理系统,使用access数据库,以身份证号和姓名做主键,另有一个编号字段bh顺序编号记录人员,在新增人员时,单独打开一个窗口,使用语句select   max(bh)   from   table找出最大的编号后+1为新增人员编号,现在有时出现的问题是,使用这种方法有时会生成和当前最大编号相同的编号,关闭窗口后再点击新增打开,就会生成正确的编号。我在保存前一个记录后使用两次adodc.refresh,均不能解决此问题,望高手指点,谢谢。
发表于:2007-12-11 09:40:371楼 得分:0
一.感觉这个编号字段似乎多余,不知道有什么作用。即使需要,建议用自动编号类型
二.这种方法在迸发操作的时候的确会有问题,你可以将最大号另存为一个表,每插入查询后用update语句加一,这样就可以了
三.没用过adodc控件,上面方法不知道是不是适用于adodc控件,仅供参考
发表于:2007-12-11 09:47:422楼 得分:0
你应该用自增长字段
发表于:2007-12-11 09:56:393楼 得分:0
你的问题可能是,用   sql   语句添加新纪录时更新完成前就去查询新的编号。建议采用异步方式等待   sql   更新完成。实际上用自动编号会更加方便。

关于并发的问题,几个方法供你选择:
1   bh   加索引,禁止重复数据。这样会弹出一个错误。
2   另建一个表,保存单一的一条记录维护最大编号。添加新员工记录时首先访问并更新此记录,如果更新成功则添加记录。因为此记录更近时自动加锁,可以防止多用户并发错误。


快速检索

最新资讯
热门点击