首页 > 解决方案 > MySQL 3 分钟后发送消息

问题描述

在我的网站上,用户可以互相发送消息。可以私信。这些都托管在消息表中。 消息表

我想向该网站的每个新用户发送 1 条私人消息。为此,您只需在 _message 表中创建一个条目。

 INSERT INTO message(from_user_id, to_user_id, text, created_at)
 SELECT user.id, new.id, "selam", created_at FROM user WHERE username = "admin"

到目前为止一切顺利。但我希望这条消息在 2 分钟后发送给用户。我怎么能做到这一点。请给我一个代码示例。

简而言之;

我希望在用户注册到站点 2 分钟后将一个条目添加到 _message 表中。

我只能这样做。我无法向添加到 _user 表中的最后一个用户发送消息以在 3 分钟后转发。

 CREATE EVENT message
ON SCHEDULE EVERY 1 MINUTE STARTS
DO
INSERT INTO message(from_user_id, to_user_id, text, created_at) SELECT user.id, new.id, "selam", created_at FROM user WHERE username = "admin"

标签: mysql

解决方案


user表需要有一个包含帐户创建时间的列。然后,您可以在计划查询中测试该列。

您需要自行加入user表,以便获取新用户和管理员用户的 ID。

CREATE EVENT message
ON SCHEDULE EVERY 1 MINUTE STARTS
DO
INSERT INTO message(from_user_id, to_user_id, text, created_at) 
SELECT admin.id, new.id, "selam", UNIX_TIMESTAMP(NOW())
FROM user AS admin
CROSS JOIN user AS new
WHERE TIMESTAMPDIFF(MINUTE, NOW(), FROM_UNIXTIME(new.creation_time)) == 2
AND admin.username = "admin"

推荐阅读