如何使用php pdo在mysql中使用外键约束从数据库中删除数据

时间:2018-06-07 11:36:37

标签: php mysql pdo

我在数据库中有三个表。

表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();

它给出了外键约束违规

1 个答案:

答案 0 :(得分:1)

将删除拆分为单独的查询可能更容易。

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