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 这会改变网站的颜色
谢谢
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 这会改变网站的颜色
谢谢