Я столкнулся с интересной проблемой в очень простом случае.
У меня есть сообщения и таблица пользователей в базе данных MySQL. Посты могут понравиться пользователям.
Таким образом, есть отдельная таблица с названием «Нравится», в которой есть столбцы: user_id
, post_id
.
Когда пользователь нажимает кнопку «Мне нравится» в приложении, выполняется запрос к php-скрипту. Скрипт проверяет, есть ли в таблице строка, в которой post_id и user_id соответствуют информации из запроса. Пользователь не может иметь более 1 записи в сообщении, и если я нажму кнопку «Нравится» в уже добавленном сообщении, предыдущая запись должна исчезнуть
Сейчас я использую 2 запроса:
1) проверить, чтобы существовать в таблице
2) Если запись не существует - я добавляю ее, а если она существует, я удаляю ее.
Теперь я вижу, что в моей таблице встречаются двойные лайки одного и того же пользователя от одного и того же пользователя. Кажется, что два запроса от одного пользователя могут быть выполнены практически мгновенно.
Как я могу его оптимизировать - чтобы было невозможно добавить два лайка к одному сообщению от пользователя? Я думаю, что вместо этого мне нужно выполнить один запрос, но каким он должен быть?