我在数据库中有三个表。
表1
项目
PK ProjectID
表2
学生
PK RegNo
FK ProjectID
表3
进展
FK RegNo
现在,当我从项目中删除记录时,我想执行删除操作的事情应该从学生中删除,因为学生主键也作为外键进度表存在,因此它也应该从进度表中删除 RegNo。我如何才能以最好的方式实现这一目标。提前谢谢。
$query = "DELETE students, progress from students inner join progress on progress.RegNo=students.RegNo where students.ProjectID='$id';DELETE FROM projects where projects.ProjectID='$id'";
//$conn->exec($query);
$stmt = $conn->prepare($query);
$stmt->execute();
它给出外键约束冲突
将删除拆分为单独的查询可能更容易。
DELETE FROM `progress`
WHERE `RegNo` IN(
SELECT `RegNo` FROM `students` WHERE ProjectID = '$id'
);
DELETE FROM `student` WHERE `ProjectID` = '$id';
DELETE FROM `projects` WHERE `ProjectID` = '$id';