我是编程新手所以请原谅我的无知。我正在尝试让MySQL表互相更新。例如:当我将数据插入一个表中的主键列时,它不会出现在另一个表中的外键列中。
有人对此问题有任何建议吗?
谢谢!
附加信息:我使用phpMyAdmin创建表格,然后添加SQL代码以创建外键。代码示例如下。
ALTER TABLE CourseSchedule
ADD FOREIGN KEY (CourseId)
REFERENCES Course(CourseId)
答案 0 :(得分:0)
我相信我们所拥有的是对documentation的轻微误解。
对于支持外键的存储引擎,MySQL拒绝任何INSERT 或尝试在a中创建外键值的UPDATE操作 子表如果没有匹配的候选键值 父表。
当UPDATE或DELETE操作影响父级中的键值时 子表中具有匹配行的表,结果取决于 使用ON UPDATE和ON DELETE指定的引用操作 FOREIGN KEY子句的子条款。 MySQL支持五种选择 关于要采取的行动,请在此处列出
您的外键实际上做的是确保您不能在CourseSchedule
表中插入与Courses
表中的条目不对应的值。
举个例子,假设你要在每个星期三9点尝试进入一个python课程,但是你没有'实际上在Courses表中有一个python条目。然后mysql将拒绝创建该条目。 Mysql无法做到相反。它不知道你的python课程的细节。因此,它无法为您自动在Courses表中创建条目。同样,如果oyu在课程表中创建了一个entr。 Mysql无法自动为您创建CourseSchedule,因为它不知道应该在什么时间安排它。