可以用mysql做这样的事情吗?
想象一下,我更新了查询,每次用户给出成功的答案时都会运行。现在我想计算更新并每四次给予+1奖励积分......
我可以只计算行并将它们除以 4,但这会给我带来不可消费的奖励积分,因为每次更新都会重新计算......
我的问题有什么mysql解决方案吗?
可以用mysql做这样的事情吗?
想象一下,我更新了查询,每次用户给出成功的答案时都会运行。现在我想计算更新并每四次给予+1奖励积分......
我可以只计算行并将它们除以 4,但这会给我带来不可消费的奖励积分,因为每次更新都会重新计算......
我的问题有什么mysql解决方案吗?
我认为当用户给出成功的答案时,您可以使用触发器并计算额外的奖金。
这是工作示例:
DROP TABLE IF EXISTS answer;
CREATE TABLE answer
(
id int not null auto_increment,
bonus int not null,
primary key(id)
);
DELIMITER //
CREATE TRIGGER lucky_trigger BEFORE INSERT ON answer
FOR EACH ROW BEGIN
IF MOD((SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'answer'), 4) = 0 THEN
SET NEW.bonus = NEW.bonus + 1;
END IF;
END //
DELIMITER ;
INSERT INTO answer(bonus) VALUES(1);
INSERT INTO answer(bonus) VALUES(1);
INSERT INTO answer(bonus) VALUES(1);
INSERT INTO answer(bonus) VALUES(1);
SELECT id, bonus FROM answer;
会给你下一个输出:
+----+-------+
| id | bonus |
+----+-------+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
+----+-------+
4 rows in set (0.00 sec)