软件开发 serial

Informix的Serial是否存在bug

我在自己写的一个小的企业应用中采用用Informix免费版。我想问下其Serial类型在自增时是否有出错的bug存在。操作系统是Widnows Server 2003 sp2 X62 Edition执行onstat -V得到的结果果如下:IBM Informix Dynamic Server Version 11.70 FC7IE Software Serial Number AAA#... 显示全部
我在自己写的一个小的企业应用中采用用Informix免费版。我想问下其Serial类型在自增时是否有出错的bug存在。
操作系统是Widnows Server 2003 sp2 X62 Edition
执行onstat -V得到的结果果如下:
IBM Informix Dynamic Server Version 11.70 FC7IE Software Serial Number AAA#B000000

现在的问题如下:
表_z_orde中含一个serial字段作为主键,另外还有一个订单号的字符串字段。添加一条记录即增加一个订单,应用程序会将这条数据打印出条码贴签在生产单上,条码与自增字段相对应,标签上也有订单号等信息。
我的应用程序没有提供修改这个表中数据的功能,只提供了增加和删除,如果填错了,删除该数据,重填。

现在的问题是,扫描条码时,有时候一个条码可以找到对应的serial,但订单号却是错的。我查询整个表,找不到任何一条记录与条码标签上的订单号相同,那么,只可能是删掉这个记录后,重填了。

所以我猜测操作者在错填该订单号后,打印了条码标签,假设serial字段值是 9988,然后又删掉了该记录,但并没有将标签作废。如果程序是正确的话,当操作员重新录入正确的订单号时,虽然该表serial字段的最大值是9987,Serial字段应该会在那个已经删掉的记录上增加1,也就是9989,这个我也试验证实过了。

我就是想问:会不会有时候,Informix会不会有时候不增加这个1 ?  我这个程序对于上述出错,大约是每几千条数据出现一次,我现在实在是找不到我的程序在这个问题上有什么bug了,下一步准写程序把删除操作删除的行的serial记在另外的表中,以证实是不是存在这样的bug .

我也知道怀疑Informix有这种bug很可能是自己在做一件愚蠢的事情,但我现在真的是找不到我的程序的缺陷了。 收起
参与5

查看其它 4 个回答xxyyy 的回答

xxyyy xxyyy 系统运维工程师 济南超讯软件技术有限公司
SERIAL字段不要参与业务逻辑,这是原则。
SERIAL字段的值并不唯一,也并不能一定连续。要想保证唯一性,要么做为主键,要么添加唯一索引。

反正记住一条就行了,SERIAL不要参与业务逻辑,即不要和业务挂钩。
互联网服务 · 2014-07-24
浏览1457

回答者

xxyyy
系统运维工程师 济南超讯软件技术有限公司
评论93

xxyyy 最近回答过的问题

回答状态

  • 发布时间:2014-07-24
  • 关注会员:0 人
  • 回答浏览:1457
  • X社区推广