MySQL触发器创建计时器

MySQL触发器创建计时器,mysql,time,triggers,Mysql,Time,Triggers,MySQL中有一种特殊的数据类型“time” 当某个状态id从1变为2时,如果我希望我的“时间”值开始计数,触发器会是什么样子?例如: 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; 当状态id从2变回1时,它将停止计数。而不是启动/停止计数器(我不知道这是否可行),您应该将值存储在两个

MySQL中有一种特殊的数据类型“time”

当某个状态id从1变为2时,如果我希望我的“时间”值开始计数,触发器会是什么样子?例如:

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;

当状态id从2变回1时,它将停止计数。

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

分隔符$$
在usr上更新后创建触发器日志\u时间
每行
开始
如果new.st_id=2,则
更新集=CURTIME();
elseif new.st_id=1则
更新集=CURTIME();
如果结束;
结束;
$$
定界符;
或者在1列中存储初始值,然后在触发器中更新它

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;
分隔符$$
在usr上更新后创建触发器日志\u时间
每行
开始
如果new.st_id=2,则
更新集=CURTIME();
否则,如果new.st_id=1,则
更新集=子时间(CURTIME(),select语句获取原始值);
如果结束;
结束;
$$
定界符;

好的,我对编码还不熟悉,我想知道这是否可能,如果可能的话,解决这个问题的最佳方法是什么

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

希望这有意义

 T     |   D
 ---------------
 22:50 |   6 (mins) 
在22:56,这将改变网站上的颜色


谢谢

欢迎来到SO!请考虑把这个问题作为一个新的问题,因为它没有回答原来的问题。
 T     |   D
 ---------------
 22:50 |   6 (mins)