在Access中出现“由于数据表***需要一个相关记录,不能添加或修改记录”如何解决?
1个回答
展开全部
因为操作违反了表间参照完整性所以报错。
解决方法是先在有关联的一方表添加相应的记录,然后再于多方表追加或修改对应的记录;又或者只添加或修改为一方表已经存在的关联记录到多方表。当然删除相应的表间关系也可以避免报错,但是这是最糟糕的解决办法,因为这样会破坏数据结构的严整性!
假设学生表和成绩表通过学生ID字段建立了一对多参照完整性关系,如果为成绩表添加一条学生ID为“0100”的成绩记录,而学生表里并不存在“0100”的学生ID,或者修改某条成绩记录的“学生ID”为一个学生表中不存在的“学生ID”;反之若果成绩表里已经存在“学生ID”为“0100”的成绩记录,现在要删除学生表里“学生ID”为“0100”的记录(若未设置级联删除的话),这些都会导致违反外键约束。
参照完整性要求表间关系中不允许引用不存在的实体。两张表之间如果实施了参照完整性(也可称之为设置了外键约束),关联表的某一方表中的记录发生新增、更新和删除等操作时,要是这些操作违反了外键约束,系统就会报错并拒绝执行相应操作以保持数据始终处于完整、和谐和正确的状态并可减少冗余。
解决方法是先在有关联的一方表添加相应的记录,然后再于多方表追加或修改对应的记录;又或者只添加或修改为一方表已经存在的关联记录到多方表。当然删除相应的表间关系也可以避免报错,但是这是最糟糕的解决办法,因为这样会破坏数据结构的严整性!
假设学生表和成绩表通过学生ID字段建立了一对多参照完整性关系,如果为成绩表添加一条学生ID为“0100”的成绩记录,而学生表里并不存在“0100”的学生ID,或者修改某条成绩记录的“学生ID”为一个学生表中不存在的“学生ID”;反之若果成绩表里已经存在“学生ID”为“0100”的成绩记录,现在要删除学生表里“学生ID”为“0100”的记录(若未设置级联删除的话),这些都会导致违反外键约束。
参照完整性要求表间关系中不允许引用不存在的实体。两张表之间如果实施了参照完整性(也可称之为设置了外键约束),关联表的某一方表中的记录发生新增、更新和删除等操作时,要是这些操作违反了外键约束,系统就会报错并拒绝执行相应操作以保持数据始终处于完整、和谐和正确的状态并可减少冗余。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询