2013-03-08 3 views
0

Возможно ли сделать что-то подобное с помощью mysql?Mysql для каждого n-го обновления для специального обновления

Представьте, что у меня есть запрос на обновление, который запускается каждый раз, когда пользователь дает успешный ответ. Теперь я хотел бы подсчитывать обновления и давать +1 бонусный пункт каждый четвертый раз ...

Я мог бы просто подсчитать строки и разделить их на 4, но это даст мне неиспользованные бонусные баллы, потому что для каждого обновления он будет пересчитан ...

Есть ли какое-нибудь решение mysql для моей проблемы?

+0

Что вы хотите достичь с этим? – Femaref

+0

@Femaref Что значит? Я хочу, чтобы пользователь получал бонусную баллу за каждый 4-й правильный ответ. – 2013-03-08 11:46:28

+1

Думаю, вы в конечном итоге сделаете что-то вроде «row #% 4 = 0». Вы могли бы использовать триггер, если бы вы чувствовали себя хитрым. – ethrbunny

ответ

0

Думаю, вы можете использовать триггер и рассчитать дополнительные бонусы, когда пользователь дает успешный ответ.

Вот рабочий пример:

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) 
Смежные вопросы