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

时间:2014-01-25 19:38:21

标签: mysql real-time

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

我会解释我到底想要什么,所以也许你可以提供帮助。

我正在制作一款游戏,所以我需要随着时间的推移用户获得金币。 例如,如果实际时间是凌晨12点,我希望在12:15用户获得50个硬币(因此数据库内的变量将在时间过后自动改变),然后在12:30他们获得50个硬币等。 即使他们在线或离线,所有这一切都会发生。 (我希望数据库一直工作!)

1 个答案:

答案 0 :(得分:1)

在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子句,查询将处理所有用户。

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

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

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