MySQL 在 Table A 上触发,使用 TIMESTAMPDIFF() 插入或更新 table B

MySQL Trigger on Table A, INSERT OR UPDATE table B with TIMESTAMPDIFF()

我有 2 个表 - clients 和 client_history。

CLIENTS:
    cID | last_seen  (LAST_SEEN is updated every 2 mins by my application)

CLIENT_HISTORY :
    ID | cID | left_left | time_arrived

我正在尝试:

随着时间的推移记录客户的来来去去。因此,当 clients.last_seen 早于 5 分钟时,使用 cID 和 clients.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.

我是触发器的新手,我不知道我的逻辑是否正确,或者是否有更简单或更好的方法来执行此操作。我想知道我是否可以引入一个标志列来指示客户离开或类似的东西。

这可能适合你。

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() 函数。