iproger
@iproger
Безответственный гений

Как лучше делать проверку при добавлении данных в mysql?

Есть данные, которые нужно пересматривать после каждого сохранения, например, это таблица доступов юзеров. После момента нажатия "Сохранить" нужно заново проверить, есть ли в таблице каждая из записей.

Вариант 1: выбрать все записи, принадлежащие к объекту А, добавить нужные/удалить лишние.
Вариант 2: удалить все записи, принадлежащие к объекту А, добавить все новые.

Сейчас планирую "вариант 2". Что лучше?
  • Вопрос задан
  • 2872 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Добавьте поле `updated` TINYINT(1), добавьте UNIQUE KEY (`user_id`, `obj_id`).
Перед изменением сбрасываем отметку:
UPDATE `table` SET `updated` = 0 WHERE `user_id` = $uid

При изменении отмечаем добавленные/дублированные записи:
INSERT INTO `table` (`user_id`, `obj_id`, `updated`) VALUES ($uid, $oid, 1)
    ON DUPLICATE KEY UPDATE `updated` = 1

После изменения удаляем неотмеченные записи:
DELETE FROM `table` WHERE `user_id` = $uid AND `updated` = 0
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Satanpit
@Satanpit
Front-end developer
У меня есть схожая ситуация со связующей таблицей категорий.
Лично мой вариант - удалять и записывать заново, в первом варианте уйдет больше ресурсов, что не совсем хорошо
Ответ написан
Комментировать
deadbyelpy
@deadbyelpy
веб-шмеб
Если возникают такие вопросы, значит структура хранения прав доступа неправильно подобрана.

Если уже ничего не исправить, да 2 вариант менее затратен. Меньше проверок.

Но, рекомендация все же в изменении структуры хранения
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы