我有一个数据库,我需要创建一个表并在一列或多列实时插入。
我会解释我到底想要什么,所以也许你可以提供帮助。
我正在制作一款游戏,所以我需要随着时间的推移用户获得金币。 例如,如果实际时间是凌晨12点,我希望在12:15用户获得50个硬币(因此数据库内的变量将在时间过后自动改变),然后在12:30他们获得50个硬币等。 即使他们在线或离线,所有这一切都会发生。 (我希望数据库一直工作!)
答案 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事件(批处理作业)运行。