解决Access键值冲突的方法
解决Access键值冲突的方法
本文重点介绍在执行Access追加查询时,遇到键值冲突错误的三种可能原因及应对办法,对于更新查询也可参照分析。对于Access初学者,经常会碰到系统的出错提示,但又不知所云。本人总结10多年的数据库应用经验,将常见问题“键值冲突”的三种常见原因分析及应对方法分享给各位。
虽然本文的制作环境是Access2016,但操作与2010版甚至2003版是一致的。如图,错误提示,是有2条记录由于键值冲突无法追加。这个追加查询是追加4条记录的,如果按“是”就只追加2条,如果按“否”就不执行追加查询(追加0条)。
方法一:
原因三,外键缺少记录。如图,订单表和供应商表设置了关系,供应商表的主键供应商与订单表供应商字段作了关联,实施参照完整性,所以订单表的供应商字段是外键。追加表中有一条含有“戊供应商”的记录,而供应商表没有对应的记录,这也是会造成键值冲突的。
应对三,补值。如图,在供应商表补充“戊供应商”的记录。
方法二:
原因一,追加表中本身就存在重复键值。如图,订单表是被追加数据进去的表,主键是订单号。主键是不可为空不可重复的。这里的追加表中订单号字段有2条记录重复了(订单号记录为:D0021)。
应对一,删除追加表的重复记录。经过甄别,第2条和第4条记录是完全相同的,删除第4条记录即可。
方法三:
原因二,追加表与被追加表有重复键值。如图,订单表已经存有D0012的订单号记录(第3条记录),而追加表也有这个订单号(也是第3条记录)。
应对二,删除重复记录。经过甄别,追加表和被追加表的这条记录是完全相同的。可删除追加表记录,也可以删除被追加表的这条记录(如图是后者)。
注意事项:本范例是根据追加查询错误制作的,对于更新查询出现的键值冲突,也可参考。