【发布时间】:2017-12-05 20:03:25
【问题描述】:
我实际上是在尝试使用 LibreOffice Base 创建一个美化的联系人列表。我们的许多联系人都有多个地址(办公室、邮寄地址、家庭),有时多个人有相同的地址。
我创建了一个简单的联系人表,其中包含联系人 ID、姓氏和名字。我创建了一个包含地址 ID、城市、州等的地址表。我还创建了一个包含联系人 ID 和地址 ID 的联结表,并使用关系工具连接了三个表。
现在我想将所有内容添加到一个表单中。我看了this youtube video,这很有帮助,但我希望能够添加新城市,而不是只从预先建立的列表中进行选择。所以我跟着视频,但将列设置为“组合框”而不是“列表框”。但是,当我尝试时,我收到一条错误消息:
插入新记录时出错
SQL 状态:23000 错误代码:-177
违反完整性约束 - 没有父 SYS_FK_94 表:地址表在语句 [INSERT INTO "Contact-Address Junction" ("Address ID","Contact ID") VALUES (?,?)]
我认为我缺少一些明显的东西,但在这一点上我很困惑。
E:我截取了更多的屏幕截图来展示表格中的关系、表格以及事物如何连接:
【问题讨论】:
-
您的“外键”是否与父表中的对应项完全匹配?
-
我之所以问,是因为 Google 搜索 similar problems 表明在这种情况下最有可能的问题是外键违规。
-
我不认为是这样 - 如果我使用的是列表框,而不是组合框,则表单可以工作。不过,我不是 100% 确定,因为我还是个新手
-
联结表应该有两个字段,1)两个字段需要指定为“key”字段,2)在Relationship设计中,这两个字段需要使用从原始表键延伸到相应联结表键的 1 对多关系(1 到 n)线连接到其他两个表的主字段。请检查这一点,甚至考虑发布一个指向图像的链接,以显示您的表格编辑的样子,以及您的关系是什么样的。如果您发布图片链接,我可以编辑您的问题并在您的问题中显示图片。
-
例如,为您的人际关系链接到this 之类的图像。
标签: sql database many-to-many libreoffice-base