MySQL 触发创建计时器

MySQL trigger to create timer

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

如果我希望我的 'time' 值在某些 state_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;

state_id 从 2 变回 1 时,它会停止计数。

而不是 starting/stopping 计数器(我不知道这是否可能),您应该将值存储在 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;

OR 在 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;

好吧,我是编码新手,想知道这是否可行,如果可行,解决此问题的最佳方法是什么

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

希望这是有道理的

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

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

谢谢