2015-07-04 124 views
1

MySQL中有一种特殊的数据类型'time'。MySQL触发器创建定时器

如果我想让我的'时间'值在某些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

回答

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; 

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; 
+0

哪一个为你工作? – Spidey

+0

第一个工作很好 –

0

好吧,我是新来的编码,并想知道如果这甚至有可能,如果这样会有什么来解决这个问题

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

希望这是有道理

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

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

谢谢

+0

欢迎来到SO!请考虑发布这是一个新的问题,因为它不回答原来的问题。 – fstanis