软件开发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#B000000

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

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

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

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

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

5同行回答

wanweifengwanweifeng软件开发工程师未知
谢谢了!我也没有使它参入业务逻辑,一般仅仅将它设为主键作为一行的唯一标识。显示全部
谢谢了!我也没有使它参入业务逻辑,一般仅仅将它设为主键作为一行的唯一标识。收起
软件开发 · 2014-07-25
浏览1341
xxyyyxxyyy系统运维工程师济南超讯软件技术有限公司
SERIAL字段不要参与业务逻辑,这是原则。SERIAL字段的值并不唯一,也并不能一定连续。要想保证唯一性,要么做为主键,要么添加唯一索引。反正记住一条就行了,SERIAL不要参与业务逻辑,即不要和业务挂钩。...显示全部
SERIAL字段不要参与业务逻辑,这是原则。
SERIAL字段的值并不唯一,也并不能一定连续。要想保证唯一性,要么做为主键,要么添加唯一索引。

反正记住一条就行了,SERIAL不要参与业务逻辑,即不要和业务挂钩。收起
互联网服务 · 2014-07-24
浏览1442
wanweifengwanweifeng软件开发工程师未知
收回此问题!目前考虑是有人故意捣乱造成的。显示全部
收回此问题!
目前考虑是有人故意捣乱造成的。收起
软件开发 · 2014-07-20
浏览1395
wanweifengwanweifeng软件开发工程师未知
或者,在计算机突然断电时,是否会出现这样的情况?显示全部
或者,在计算机突然断电时,是否会出现这样的情况?收起
软件开发 · 2014-07-20
浏览1377
weiruan85weiruan85数据库管理员ibm
The SERIAL data type stores a sequential integer, in the positive range of the INT8 data type, that is automatically assigned by the database server when a new row is inserted. A table can have no more than one SERIAL column, but it can have one SERI...显示全部
The SERIAL data type stores a sequential integer, in the positive range of the INT8 data type, that is automatically assigned by the database server when a new row is inserted. A table can have no more than one SERIAL column, but it can have one SERIAL and one SERIAL8 column.

SERIAL values in a column are not automatically unique. You must apply a unique index or primary key constraint to this column to prevent duplicate serial numbers. If you use the interactive schema editor in DB–Access to define the table, a unique index is applied automatically to a SERIAL column
.

SERIAL numbers might not be consecutive, because of concurrent users, rollbacks, and other factors.收起
政府机关 · 2014-07-19
浏览1446

提问者

wanweifeng
软件开发工程师未知

问题状态

  • 发布时间:2014-07-19
  • 关注会员:0 人
  • 问题浏览:5464
  • 最近回答:2014-07-25
  • X社区推广