mysqlでこのようなことをすることは可能ですか?
ユーザーが成功した回答を返すたびに実行されるクエリを更新したとします。今、私は更新をカウントし、4 回ごとに +1 ボーナス ポイントを与えたいと思います...
行を数えて 4 で割ることもできますが、更新のたびに再計算されるため、使えないボーナス ポイントが得られます...
私の問題に対する mysql ソリューションはありますか?
mysqlでこのようなことをすることは可能ですか?
ユーザーが成功した回答を返すたびに実行されるクエリを更新したとします。今、私は更新をカウントし、4 回ごとに +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)