A有一种情况,即创建课程,指派教师教授课程,然后学生可以预订课程。这些都是很多人。课程< - >教师和课程< - >学生。有一个课程表和两个连接它们的连接表。
这是结构:
Lesson Table - lesson.lessonID
Lesson/Student Junction Table - lsj.lessonFK
Lesson/Teacher Junction Table - ltj.lessonFK
我希望从课程表中删除课程,但由于联结表关联而无法删除。我先尝试删除关联,然后再上课,但似乎没有用。
DELETE
FROM junc_lesson_teacher, junc_lesson_student, lesson
JOIN user ON user.userID = junc_lesson_teacher.teacherFK
JOIN lesson ON lesson.lessonID = junc_lesson_teacher.lessonFK
WHERE lessonID = {$id}//PHP $_GET id from a form
删除教师和学生协会课程的最佳方法是什么? 感谢您的任何意见!
编辑:
我也尝试将其作为查询发送,但似乎不起作用:
DELETE FROM junc_lesson_teacher WHERE junc_lesson_teacher.lessonFK = {$id};
DELETE FROM junc_lesson_student WHERE junc_lesson_student.lessonFK = {$id};
DELETE FROM lesson WHERE lesson.lessonID = {$id};
答案 0 :(得分:0)
如果要更改表的外键行为,则可以成功执行该查询。转到此link,并在CREATE TABLE语句中不要使用下面的这些关键字。在ON DELETE NO ACTION和ON DELETE SET NULL中还有其他变体,其中包括我可能还不知道的其他变体。
ON DELETE CASCADE
如果已经构建了模式,这也适用于ALTER TABLE语句。但要小心,因为一旦删除了与其他表有许多关联外键关系的行。这些行也会从其他表中删除。