表a上的mysql触发器,使用timestampdiff()插入或更新表b

qnakjoqk  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(357)

我有两个表-客户和客户历史。

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

CLIENT_HISTORY :
    ID | cID | left_left | time_arrived

我想:
记录客户的来来往往。因此,当clients.last\u seen超过5分钟时,将记录插入到client\u历史记录中,并使用cid和clients.last\u seen值。
我想要这样的东西:

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.

我对触发器还不熟悉,我不知道我的逻辑是否正确,或者是否有更简单或更好的方法。我想知道是否可以引入一个标志列来指示客户机离开或类似的情况。

vh0rcniy

vh0rcniy1#

这也许能帮你弄到。

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() 功能。

相关问题