我有2个表-客户端和client_history。
CLIENTS:
cID | last_seen (LAST_SEEN is updated every 2 mins by my application)
CLIENT_HISTORY :
ID | cID | left_left | time_arrived
我正在尝试:
记录一段时间内客户的来往情况。因此,当client.last_seen的时间超过5分钟时,INSERT会使用cID和client.last_seen值将其记录到client_history中。
我想要类似的东西
BEGIN
IF (-- something here is true)
THEN
INSERT INTO client_history
SET
cID=old.cID,
last_seen=old.last_seen;
ELSEIF (-- something here is true)
THEN
INSERT INTO client_history
SET
time_arrived=old.last_seen
END IF;
END
我一直在使用
IF (TIMESTAMPDIFF(MINUTE,c.last_seen,NOW()) > 5) for the first IF condition.
我是触发器的新手,我不知道我的逻辑是否很好,或者是否有更简单或更佳的方法来做到这一点。我想知道我是否可以引入一个标志列来指示客户离开了?
答案 0 :(得分:0)
这可能为您找到了。
DELIMETER $$
CREATE TRIGGER monitor
AFTER UPDATE
ON clients
FOR EACH ROW
BEGIN
IF (TIMESTAMPDIFF(MINUTE, OLD.last_seen, NEW.last_seen ) > 5)
THEN INSERT INTO client_history (cID, left_left)-- or whichever column here
SELECT NEW.cID, NEW.last_seen FROM client_history;
END IF;
END $$
DELIMETER ;
我认为应该在逻辑中使用NEW.last_seen
值而不是NOW()
函数。