Как я могу удалить данные из базы данных с ограничением внешнего ключа в MySQL, используя php pdo - PullRequest
0 голосов
/ 07 июня 2018

У меня есть три таблицы в базе данных.

таблица 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 голосов
/ 07 июня 2018

Может быть проще разделить удаления на отдельные запросы.

 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';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...