Mysql SQL-在数据库表中实时插入

Mysql SQL-在数据库表中实时插入,mysql,real-time,Mysql,Real Time,我有一个数据库,我需要创建一个表并实时插入一个或多个列 我会解释我到底想要什么,也许你能帮我 我正在制作一个游戏,所以随着时间的推移,我需要一个用户来获得硬币。 例如,如果实时时间是12:00 am,我希望用户在12:15获得50枚硬币(因此数据库中的变量将在时间流逝后自动更改),那么在12:30他们获得50枚硬币等。 即使他们在线或离线,所有这些都会发生。(我希望数据库一直工作!)在MySQL中,当前时间总是可以通过使用表达式NOW()来检索 现在假设您希望每个玩家以每小时200的速度获得硬币

我有一个数据库,我需要创建一个表并实时插入一个或多个列

我会解释我到底想要什么,也许你能帮我

我正在制作一个游戏,所以随着时间的推移,我需要一个用户来获得硬币。 例如,如果实时时间是12:00 am,我希望用户在12:15获得50枚硬币(因此数据库中的变量将在时间流逝后自动更改),那么在12:30他们获得50枚硬币等。
即使他们在线或离线,所有这些都会发生。(我希望数据库一直工作!)

在MySQL中,当前时间总是可以通过使用表达式
NOW()
来检索

现在假设您希望每个玩家以每小时200的速度获得硬币。这恰好是每18秒一枚硬币;这很重要,因为我们将使用整数算术

让自己成为一个包含这些列的表
user
。我想你也可以把其他栏目也放进去

  user_id                INT
  current_coin_balance   INT
  last_autopay           DATETIME
然后,每隔一段时间运行以下查询:

  UPDATE user 
    SET current_coin_balance = current_coin_balance +
                          ROUND(TIMESTAMPDIFF(SECOND,last_autopay, NOW()) / 18),
        last_autopay = NOW()
如果希望,可以添加
WHERE
子句,以便在任何给定的查询运行中仅更新某些用户。如果没有
WHERE
子句,查询将处理所有用户

这将计算出自最近一次付款以来的秒数,并除以18得到硬币数。然后,它将贷记用户的余额,并记录付款时间

无论您为任何特定用户运行此查询的频率有多高。您可以在每次触摸用户记录时,或每15分钟,或任何您需要的时间运行它


如果愿意,您可以将其作为所谓的MySQL事件(批处理作业)运行。

这通常不能在DBMS中完成。但要回答这个问题,我们必须知道您实际使用的是哪种DBMS。博士后?Oracle?MySQL(使用wampserver)为什么他们的硬币计数每15分钟更新一次很重要,即使他们离线时也是如此?为什么你不在他们在线的时候更新,当他们一天中第一次在线的时候(或者其他什么时候)计算注销和登录之间的时间差,并根据他们在该时间段内需要赚取的收入更新他们的硬币数量?这样其他玩家就不会与实际玩家合作硬币数量我正在制作的游戏受我正在玩的另一个在线互联网游戏的启发。它的工作原理是这样的:例如,有20个用户,你必须做的一些动作就是从他们那里偷硬币。时间流逝后,所有用户(离线或在线)都会获得硬币。对在线玩家的好处是,他们可以为离线玩家偷窃,加上游戏中的很多动作都是基于金钱的(升级、武器库升级、带走战士)。所以我不知道怎么做,但有一种方法可以做到。