我在自己写的一个小的企业应用中采用用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很可能是自己在做一件愚蠢的事情,但我现在真的是找不到我的程序的缺陷了。
收起