在MYSQL和PHP中删除数据库条目和关联的Junction表数据

时间:2013-12-22 14:14:16

标签: php mysql sql

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};

1 个答案:

答案 0 :(得分:0)

如果要更改表的外键行为,则可以成功执行该查询。转到此link,并在CREATE TABLE语句中不要使用下面的这些关键字。在ON DELETE NO ACTION和ON DELETE SET NULL中还有其他变体,其中包括我可能还不知道的其他变体。

  

ON DELETE CASCADE

如果已经构建了模式,这也适用于ALTER TABLE语句。但要小心,因为一旦删除了与其他表有许多关联外键关系的行。这些行也会从其他表中删除。