MySQL触发创建计时器

时间:2015-07-04 12:03:30

标签: mysql time triggers

MySQL中有一个特殊的数据类型'time'。

当某些var Student = new Model({ name: 'John', age: 22, year: 5, examsTaken: 2, takeExam: function(){ this.examsTaken++; this.changed = true; } }); var StudentController = new Controller({ model: Student, elementId: 'student-container', render: function(){ return '<span>' + this.model.name + '</span><button id="student-exams-button">Increase exams taken</button>'; }, clickHandlers: { '#student-exams-button': 'updateExams' }, updateExams: function(){ this.model.takeExam(); } }); 从1更改为2时,如果我希望“时间”值开始计数,触发器会如何显示?例如:

state_id

CREATE TRIGGER log_time AFTER UPDATE ON usr FOR EACH ROW BEGIN IF usr.st_id = 2 THEN #.... - thats what i dont know END IF; END; 从2变为1时,它将停止计数。

2 个答案:

答案 0 :(得分:1)

不是启动/停止计数器(我不知道这是否可能),你应该将值存储在2个不同的列中(然后减去以获得所需的时间)

DELIMITER $$      
CREATE TRIGGER log_time AFTER UPDATE ON usr
    FOR EACH ROW
    BEGIN
        IF new.st_id = 2 THEN
            UPDATE <table> set <log_start_time> = CURTIME() <where_clause>;
        elseif new.st_id = 1 THEN
            UPDATE <table> set <log_end_time> = CURTIME() <where_clause>;
        END IF;
    END;
$$
DELIMITER;

通过存储初始值然后在触发器中更新它,在1列中进行OR运算

DELIMITER $$      
CREATE TRIGGER log_time AFTER UPDATE ON usr
    FOR EACH ROW
    BEGIN
        IF new.st_id = 2 THEN
            UPDATE <table> set <logtime> = CURTIME() <where_clause>;
        else if new.st_id = 1 THEN
            UPDATE <table> set <logtime> = subtime(CURTIME(), select statement to get original value) <where_clause>;
        END IF;
    END;
$$
DELIMITER;

答案 1 :(得分:0)

好吧,我是编码的新手,想知道这是否可能,如果是的话,最好的方法是解决这个问题

好的,在我的数据库中,我有一行当前时间和一行持续时间,我想找到一种方式,以便当时间是T + D的值时,它会改变颜色(绿色)?或者甚至更好,如果它可以这样做,如果等于或低于2分钟的琥珀色和超过2分钟的红色(有点像交通灯的想法)

希望这是有道理的

 T     |   D
 ---------------
 22:50 |   6 (mins) 

在22:56,这会改变网站上的颜色

谢谢