我的网站上有点击次数。 例如,每个用户个人资料可以在页面上显示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;
计数有500.每次出现(兰特)我将删除1. 499,498。 但这个数字必须精确。如果2个用户同时打开一个页面,而mysql两个都获得499,那么它只会减少1个。
任何想法如何准确地做到这一点?
答案 0 :(得分:1)
每个sql查询都是原子执行的。这意味着,如果在sql语句中递减计数器,则总是得到正确的结果 - 即使两个查询在同一时间执行。
UPDATE show_profile SET count = count - 1 WHERE id = ? AND count > 0