Можно ли удалить из трех таблиц в одном запросе на удаление? - PullRequest
0 голосов
/ 23 апреля 2020

Я застрял в этом коде, где я должен удалить данные из 3 таблиц, используя client_accounts, с тем же идентификатором этого указанного c пользователя. этот код не удаляется, и мне нужна вся ваша помощь, спасибо.

<?php
include "connect.php";

$index = $_POST['index'];

$msg = [];

$sql = "DELETE client_accounts, ct_trans, ct_update
        FROM client_accounts
        LEFT JOIN ct_trans ON client_accounts.ct_id=client_accounts.client_id
        LEFT JOIN ct_update ON client_accounts.ct_id=ct_update.ct_id
        WHERE client_accounts.client_id = '$index';";
if($db->query($sql)){
    $msg['status'] = true;
    $msg['message'] = "Deleted Successfully";
}else {
    $msg['status'] = false;
    $msg['message'] = "Deletion Failed";
}
echo json_encode($msg);

?>

это jquery часть

function deleteclient(i){
$.post("delclient.php",{"index":i},function(response){
    var data = JSON.parse(response);
    $("#message").text(data.message);

    getclient();
})
}

1 Ответ

2 голосов
/ 23 апреля 2020

Ваше первое условие соединения выглядит неправильно, и вы, вероятно, намеревались это сделать:

DELETE client_accounts, ct_trans, ct_update
FROM client_accounts
LEFT JOIN ct_trans ON client_accounts.ct_id = ct_trans.client_id
LEFT JOIN ct_update ON client_accounts.ct_id = ct_update.ct_id
WHERE client_accounts.client_id = ?;

При этом, возможно, лучшим решением для проектирования было бы использование каскадного удаления в ct_trans и * 1005. * tables:

ALTER TABLE ct_trans ADD FOREIGN KEY (client_id) REFERENCES client_accounts (ct_id)
    ON DELETE CASCADE;
ALTER TABLE ct_update ADD FOREIGN KEY (ct_id) REFERENCES client_accounts (ct_id)
    ON DELETE CASCADE;

При наличии этих двух ограничений по внешнему ключу удаление родительской записи в таблице client_accounts вызовет каскадное удаление, которое также удалит все дочерние записи в ct_trans и ct_update таблиц, которые связаны с этой родительской записью. Теперь все, что вам нужно, это:

DELETE FROM client_accounts WHERE client_id = ?;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...