紧急求救!!!关于sql自动编号的问题!

sampion 2013-04-28 04:51:41
本人服务器装一mssql数据库,表中的一个“编号”字段设置为自动编号,每次增加值为1,在客户端通过access界面进行记录的添加,最近发现的问题,比如说自动生成一个编号44455,客户端有二台机子同时输入的情况,比方说客户端A输入“客户张三”这个记录,生成一个号44455,然后打印出来;客户端输入“客户李四”这个记录,生成的号也是44455,也可以打印出来,但是实际上在服务器上并没有保存成功。这样导致“客户李四”这条记录变成了无头档案了。怎么办?有高手帮解决一下是什么问题??
因为之前好像没出现这个问题,是不是现在记录数多了(现在有近五万条记录了)的原因???

谢谢!!!!!!!!!!
...全文
280 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
sampion 2013-05-03
  • 打赏
  • 举报
回复
楼上的二位,我今天看了一下程序,没找到select 了 max(id)之类的操作,有更简便的措施么,不要写程序之类的,只要简单对表的属性设置一下,可行不??
那城 2013-05-02
  • 打赏
  • 举报
回复
新建一张表来管理 id,然后把这个id当做另一张表的主键关联起来,每次插入前先select max(id)+1 from ....然后再插入
专注or全面 2013-05-01
  • 打赏
  • 举报
回复
引用 15 楼 sampion 的回复:
[quote=引用 14 楼 x_wy46 的回复:] 估计是你程序中select 了 max(id)之类的操作了吧
怎么解决?[/quote] 如果用了先max(id),然后用此ID作为标示量然后插入数据的话 把select max(id)+insert 放在一个事务中,可避免取得重复ID的情况 因为插入操作未提交之前,select max(id)将取不到值
sampion 2013-04-30
  • 打赏
  • 举报
回复
引用 14 楼 x_wy46 的回复:
估计是你程序中select 了 max(id)之类的操作了吧
怎么解决?
专注or全面 2013-04-30
  • 打赏
  • 举报
回复
估计是你程序中select 了 max(id)之类的操作了吧
sampion 2013-04-30
  • 打赏
  • 举报
回复
引用 11 楼 sz_haitao 的回复:
实际上在服务器上并没有保存成功? 应该是服务器上新增成功后,再取得本人的新记录的id作为打印。。。。
问什么不同的客户端同时取得了相同的编号?
sampion 2013-04-30
  • 打赏
  • 举报
回复
引用 10 楼 chuifengde 的回复:
自动增长的编号不会产生相同的,除非你用了IDENTITY_INSERT 开关,并且编号是程序产生的,我觉得不会是这种情况,应该是产生了一个号被A与B同时获取了,这种情况应该看程序代码
恩,那如何处置?
haitao 2013-04-29
  • 打赏
  • 举报
回复
实际上在服务器上并没有保存成功? 应该是服务器上新增成功后,再取得本人的新记录的id作为打印。。。。
chuifengde 2013-04-29
  • 打赏
  • 举报
回复
自动增长的编号不会产生相同的,除非你用了IDENTITY_INSERT 开关,并且编号是程序产生的,我觉得不会是这种情况,应该是产生了一个号被A与B同时获取了,这种情况应该看程序代码
sampion 2013-04-28
  • 打赏
  • 举报
回复
引用 6 楼 ap0405140 的回复:
[quote=引用 2 楼 ap0405140 的回复:] Access界面进行记录添加时,先产生一个临时编号,如44455. 当点击保存时,判断数据库中是否存在44455编号? 若不存在,则用44455新增到数据库,前端程序中的编号信息不变. 若已存在,则再编一个编号,并更新到前端程序中的编号信息.
--> 当不点击保存而中途退出,数据库实际没有动呀,下一次进来,临时编号还是44455的.[/quote] 不点击保存就无法生成编号。
sampion 2013-04-28
  • 打赏
  • 举报
回复
sampion 2013-04-28
  • 打赏
  • 举报
回复
引用 3 楼 chuifengde 的回复:
自动生成的怎么会有重复记录?
我判定是客户端A与B同时保存记录,也就是同时向服务器叫号,另外客户端A与B同时用的一个管理员sa帐号在登陆,是不是换用不甘落后的帐号登陆就不会出现这种问题。
唐诗三百首 2013-04-28
  • 打赏
  • 举报
回复
引用 2 楼 ap0405140 的回复:
Access界面进行记录添加时,先产生一个临时编号,如44455. 当点击保存时,判断数据库中是否存在44455编号? 若不存在,则用44455新增到数据库,前端程序中的编号信息不变. 若已存在,则再编一个编号,并更新到前端程序中的编号信息.
--> 当不点击保存而中途退出,数据库实际没有动呀,下一次进来,临时编号还是44455的.
sampion 2013-04-28
  • 打赏
  • 举报
回复
引用 2 楼 ap0405140 的回复:
Access界面进行记录添加时,先产生一个临时编号,如44455. 当点击保存时,判断数据库中是否存在44455编号? 若不存在,则用44455新增到数据库,前端程序中的编号信息不变. 若已存在,则再编一个编号,并更新到前端程序中的编号信息.
编号是自动生成的,不保存记录就不会生成记录,也就不会生成编号。现在见鬼的是一个编号竟然出现了二个人
sampion 2013-04-28
  • 打赏
  • 举报
回复
引用 1 楼 ZaoLianBuXiQi 的回复:
数据库有没有张三李四数据,没有的话,刷新一下(或查询一下)是打印不出来的啊
只有张三,没有没有李四的数据了,但是事实上确实李四的记录当时生成的了,有当时打印出的表格为证。
chuifengde 2013-04-28
  • 打赏
  • 举报
回复
自动生成的怎么会有重复记录?
唐诗三百首 2013-04-28
  • 打赏
  • 举报
回复
Access界面进行记录添加时,先产生一个临时编号,如44455. 当点击保存时,判断数据库中是否存在44455编号? 若不存在,则用44455新增到数据库,前端程序中的编号信息不变. 若已存在,则再编一个编号,并更新到前端程序中的编号信息.
MrYangkang 2013-04-28
  • 打赏
  • 举报
回复
数据库有没有张三李四数据,没有的话,刷新一下(或查询一下)是打印不出来的啊

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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