mysql удаляет связь из таблицы соединений, затем удаляет строку, если она больше не содержит больше связей

0

У меня есть база данных с таблицами пользователей, списков и users_to_lists.

Когда пользователь удаляет себя из списка, я использую следующее:

"DELETE FROM users_to_lists WHERE user_id=? AND list_id=?"

То, что я хочу сделать, - это очистить, удалив список, только если больше пользователей осталось после того, как последний пользователь удалил себя из списка и не уверен, как это сделать.

Итак, что я хотел бы сделать, это: 1. удалить отношение для пользователя в список 2. проверить, имеет ли список какие-либо отношения с пользователем 3. если нет отношений пользователя, удалить список

Удовлетворение наилучшей практики в этом сценарии

  • 1
    Я думаю, что триггер будет лучшей практикой.
  • 0
    хорошо спасибо. Я буду исследовать триггеры
Теги:

2 ответа

0

Вы можете добавить это вместе с инструкцией delete для очистки всех неиспользуемых списков.

DELETE FROM list WHERE id <> (SELECT list_id FROM users_to_lists)
0

Я бы рекомендовал вам ознакомиться с документацией о внешних ограничениях ключа

Вы можете уточнить свой запрос, используя свойство ON_DELETE CASCADE. Проверьте документацию. Если у вас есть какие-либо вопросы, вы можете задать мне вопрос.

  • 0
    ON DELETE CASCADE не делает этого. Он хочет удалить родителя, когда все дети удалены. CASCADE удаляет дочерние CASCADE удалении родителя.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню