Есть много способов снять кожу с этой кошки, несколько техник, о которых я могу подумать:
1. Удалить все роли и повторно вставить
Это простой подход. Удалите все роли для пользователя и просто вставьте заново. Обычно пользователю принадлежат только несколько ролей (менее 10). Кроме того, существует большая вероятность того, что никакие другие внешние ключи не ссылаются на эту таблицу «многие ко многим».
2. Следите за изменениями и применяйте только изменения
Это больше работы, но более эффективно, даже если в этом случае немного. Такие инструменты, как ORMs
, упрощают отслеживание и применение таких изменений.
3. Примените изменения, когда пользователь вносит изменения
В этом случае я предполагаю, что допустимо применять изменения БД, поскольку конечный пользователь связывает пользователя с ролями. Возможно, это локальная база данных, и каждая транзакция недолговечна. Но я думаю, что это маловероятный сценарий.
Не думаю, что в данном конкретном случае есть что-то неправильное для удаления и повторной вставки.