我认为我的联系人列表数据库设计是正确的,但是有错误。 Access 2013告诉我:
您无法添加或更改记录,因为表'COMPANY'中需要相关记录
我是Access的新手,这是一个名为“Computer Concepts II”的课程。我已经完成了我的任务,并且一丝不苟地遵循了指示。本课程仅在线举行,我已经尝试过3次不同的方式,但未能得到教师的任何反馈。
以下是我尝试过的细节:
找到并阅读以下看似相关的帖子,但没有一个提供我所寻求的帮助:
"You cannot add or change a record because a related record is required", but related record exists?
You cannot add or change a record because a related record is required in table
“您无法添加或更改记录,因为表'FAMILY'中需要相关记录”
嗯,一个COMPANY条目是完全可选的,不需要任何方式,所以这有点令人困惑。我不确定我做错了什么或从哪里开始。我不知道在这堂课之前如何使用Access,但我觉得我现在有一个非常好的处理,我一丝不苟地按照说明操作。因此,我认为问题是某处设置错误。
答案 0 :(得分:3)
在看到 Sergey S 的评论之前,我自己发现了这一点,但正如他所指出的那样,"默认"财产领域。在我发现解决方案后,我将以下内容发布到我班级的讨论区:
事实证明, Access正在自动设置默认值 我的外键[FK]为零(" 0")。我没有意识到, 但正在发生的事情是即使一个人没有被要求 有一家公司,因为" 0"在公司领域为我的人 记录导致错误的原因。原因?我怀疑 数据库正在寻找ID为" 0"的公司记录。以来 我的公司记录从2开始," 0"记录从未被发现,导致 错误。
解决方案
我解决这个问题的方法很简单 设置进入设计中我的2个外键的默认字段 查看,删除零,并确保没有默认值。要么, 另一种说法是:确保没有默认值 外键的值。
我能够添加 每个表有3-4行数据,我甚至运行了一个基本查询来测试 数据库。它似乎工作得很好。
感谢所有贡献的人!
答案 1 :(得分:2)
如果您不需要将家人和/或公司链接到个人记录,请不要在ID-FAM_FK
和ID-COM_FK
字段中输入任何内容,请将其留空。在表定义中,这些字段不应具有默认值,Required
属性应为No
。
如果您需要将Person与Family和/或Company链接,请先将数据输入Family和/或Company表,然后在Person表中添加或更新记录
答案 2 :(得分:1)
在表中声明FK意味着该表中列的子行必须出现在引用的表中。宣布FK没有其他理由。在SQL数据库中,当FK列保持NULL时(默认情况下),子行值不必出现在引用的表中。
因此,添加或编辑的Person行的非空白/非空FK值必须已经位于其引用表的某些行中。在评论中你说一个人必须有一个家庭,即需要人FK,即可以是非空白/非空,但不必有公司,即公司FK不是必需的,即可以为空/ NULL。因此,要添加Person行,您必须首先在Family中为其族添加一行,然后将Person行的ID-FAM值添加为ID-FAM-FK,并将ID-COM-FK添加为空/ NULL或ID - 公司在公司行中的-COM值。
错误消息不是很清楚。实际违规是在您离开之前,已添加或编辑行的人每行必须具有每个所需FK的值,因此必须为其引用的行,并且每个非必需FK的值为NULL 。但是错误消息只提到了关于缺少足够行的部分。
查询或更新数据库(包括JOINing)不需要FK(和其他约束)。它们用于DBMS的更新验证(和增强优化)。
答案 3 :(得分:0)
转到数据库,然后转到两个相关表之间的编辑关系。检查"级联更新相关字段"。现在更新或编辑将起作用,无需更新任何其他内容。