【问题标题】:Access didn't add 1 record(s) to the table due to key violation. What is wrong here?由于密钥冲突,Access 没有向表中添加 1 条记录。这里有什么问题?
【发布时间】:2017-10-30 21:15:11
【问题描述】:

我的结构如下:时间表有 COMPOSITE PRIMARY KEY,它由 2 个外键组成 - [LECTURER'S ID] 和 [SUBJECT CODE][]@ 987654321@

当我尝试运行 INSERT 查询 INTO Timetable 时,它​​给了我这个错误

但同时我可以毫无问题地在 [SUBJECT DETAILS] 表中手动输入值!

如何使用查询将值插入到时间表中?我应该以不同的方式或其他方式创建时间表吗?

谢谢

【问题讨论】:

  • 我猜你正试图在 TIMETABLE 中插入 SUBJECT_CODELECTURE'S_DETAISSUBJECT_DETAILS 中不存在的 SUBJECT_DETAILS
  • 不,如您所见,我在 [SUBJECT DETAILS] 表中有记录,与 [LECTURER'S DETAILS] 中的记录相同
  • 我试图添加存在于 [LECTURER'S DETAILS] 和 [SUBJECT DETAILS] 中的相同值
  • 也许你是对的。有些记录我可以插入,有些则不能,但都存在于 [LECTURER'S DETAILS] 和 [SUBJECT DETAILS] 表中,我的意思是值 [LECTURER'S ID] 和 [SUBJECT CODE]。
  • DURATION的数据类型是什么?

标签: sql ms-access foreign-keys key composite-primary-key


【解决方案1】:

我发现了问题!在编写查询之前,我已经在 Exel 中创建了表

我正在做的是从 Exel 复制/粘贴值到我的查询中。 但是当我尝试手动将值写入查询时,它开始起作用了!

我认为当我从 Exel 复制值时,它也在复制其他东西,所以永远不要从 EXEL 复制值到您的查询中。

【讨论】:

  • 太棒了。很高兴你找到它。
【解决方案2】:

尝试添加字段名称。

INSERT INTO TIMETABLE ([LECTURER'S ID], [SUBJECT CODE], [DURATION])
VALUES ('LID001', etc...

如果可以,请从字段名称中删除撇号,并将所有名称改为一个单词,即 LecturersID、SubjectCode 等。

【讨论】:

  • 是的,这可能没有帮助...如果可以,请提供 TIMETABLE 索引的屏幕截图(添加到原始问题)。
  • 我删除了撇号,将所有属性的名称变成一个单词,尝试了您的示例,问题仍然存在。顺便说一句,我添加了 TIMETABLE 索引的截图,我尝试以不同的方式更改它们,但不起作用。
  • 不幸的是那些不是索引。在设计视图中打开表格并单击闪电。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多