外部sql数据源,有一个表中的编号列是自动生成编号,格式和帮助中“自动编号”代码一样,如:MG20130305-0001。
测试中发现一个问题,偶尔会在保存时提示有主键约束,即主键值重复,无法保存,可是表中显示的明明就是唯一的编码,难道是我眼花了?!值得说明的是,这个报错信息来自SQL数据库。
因为这个现象不是经常出现,即使出现,打开主表,把编码列的几个编码分别用鼠标左键“点进去”,再保存就好了,就不会出现报错提示。
我百思不解,反复看代码,也看不出毛病。
今天又碰到这个现象,决心把原因找到,我专门把数据库打开,一对比,找到了!
原来,故障发生在把已生成的自动编号记录删除后又添加这一操作上。为方便说明,我按数据变化的步骤说明:
1、新增行,生成自动编号记录,记录行中其它数据正常输入,如此输入多行,保存。
2、数据库中出现了刚保存的几条记录。
3、发现刚输入的记录最后一条有误,删除。新增行,输入,保存,出现来自数据库的主键重复的报错!
4、此时,数据库中,刚才被删除的表记录数据实际还存在,原因找到了,表记录最后一行删除后,数据库未同步更新,表中再次新增行记录的编码就会和数据库原有记录编码冲突,故报错。
原因找到了,貌似在删除按钮中加入个保存命令就可以解决问题。可我总觉得不太满意,请教专家还有其它办法没有?因为,我发现,只要在表中出现冲突的编码单元格双击进入编辑模式,什么都不做再退出,表就可以保存,不再报错。双击单元格也可以同步数据库吗?!
[此贴子已经被作者于2013-3-5 14:52:55编辑过]