У меня есть база данных с таблицами пользователей, списков и users_to_lists.
Когда пользователь удаляет себя из списка, я использую следующее:
"DELETE FROM users_to_lists WHERE user_id=? AND list_id=?"
То, что я хочу сделать, - это очистить, удалив список, только если больше пользователей осталось после того, как последний пользователь удалил себя из списка и не уверен, как это сделать.
Итак, что я хотел бы сделать, это: 1. удалить отношение для пользователя в список 2. проверить, имеет ли список какие-либо отношения с пользователем 3. если нет отношений пользователя, удалить список
Удовлетворение наилучшей практики в этом сценарии
Вы можете добавить это вместе с инструкцией delete для очистки всех неиспользуемых списков.
DELETE FROM list WHERE id <> (SELECT list_id FROM users_to_lists)
Я бы рекомендовал вам ознакомиться с документацией о внешних ограничениях ключа
Вы можете уточнить свой запрос, используя свойство ON_DELETE CASCADE
. Проверьте документацию. Если у вас есть какие-либо вопросы, вы можете задать мне вопрос.
ON DELETE CASCADE
не делает этого. Он хочет удалить родителя, когда все дети удалены. CASCADE
удаляет дочерние CASCADE
удалении родителя.