Обратный отсчет кликов MySQL

0

У меня есть количество кликов для чего-то на моем сайте. Например, каждый пользовательский профиль может отображаться 500 раз на странице. Каждый раз, когда он появляется, я уменьшу 1.

 CREATE TABLE IF NOT EXISTS 'show_profile' (   
'id' int(11) UNSIGNED NOT NULL AUTO_INCREMENT,   
'user' INT(11) UNSIGNED NOT NULL,   
'count'INT(11) UNSIGNED NOT NULL,   
'data' datetime NOT NULL,   
PRIMARY KEY ('id') ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

count имеет 500. Каждый раз, когда он появляется (rand), я удаляю 1. 499, 498. Но этот счет должен быть точным. если 2 пользователя открывают страницу одновременно, а mysql получает 499 для обоих, это уменьшит только 1.

Любые идеи, как это сделать точно?

Теги:

1 ответ

1
Лучший ответ

Каждый запрос sql выполняется атомарно. Это означает, что если вы уменьшаете счетчик внутри оператора sql, вы всегда получаете правильный результат - даже если два запроса выполняются точно в одно и то же время.

UPDATE show_profile SET count = count - 1 WHERE id = ? AND count > 0
  • 0
    о, я получил это в php и обновил таблицу после этого! Спасибо тебе друг!
  • 1
    Кроме того, чтобы получить это право, вы также можете проверить count > 0 и соответствующие строки возвращают значение, чтобы предотвратить отрицательный счет

Ещё вопросы

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