更新主键产生主键重复问题
cnwin 2012-01-30 07:08:29 这样一种情况,主细表(采购入库单这样)
子表里有行号,行号加表单号(外键)作为联合主键.
正常用没什么问题,现在想实现这样一个功能,用户可能想象用Excel一样插入行,这样就需要将后面的行号重新赋值。这个倒容易。
只不过在adapter.Update时就会有主键重复问题了。一开始还没理解,我的行没有重复的行号啊。
后来想了想,可能更新是一行一行的执行,就像执行以下语句:
"update xxx set line=4 where line=3"
可能是这个原因,也就好解释了,因为数据库里此时确实有行号为4的行阿。
由此想到不只这样,只要有交换主键值的情况都可能出这个问题(只不过一般不会做这种交换的事情)。
目前采用数据绑定的方式,遇到了这样的问题是不是就没法解决了?
我想过如果不采用这种方式,而是手工写代码更新,更新世删除对应表单的所有行,再将现有行插入。应该可以解决。
如果行号不作为主键,也可以解决。只是子表没了唯一值限定,不便使用Adapter自动生成语句。当然可以在另外定义一个自增行号列作为主键来解决(不过该列有可能不是连续的号),保留现有的单据行号。
是不是也就这样解决了?还是有更好的方法?