我搜索并找到了与隔离级别相关的内容并“防止脏读”。我从搜索中理解的是,我需要使用READ COMMITED选项隔离事务级别(虽然我不确定,但仍然是mysql begginner)。然而,我想要的是确保当我通过SELECT获取信息时,肯定是更新的信息(信息可能刚刚更新,如果我不这样做,我会得到旧的信息关于它的任何事情......)。
我想我理解这个理论,但我不能对实践说同样的话。 我的旧查询就像这样(js):
var query = "SELECT name FROM user_info WHERE id = "+user_id+"";
// doesn't solve my problem...
我怎样才能表现自己想要的?像这样的东西?
var query = "SET TRANSACTION ISOLATION LEVEL READ COMMITED SELECT name FROM user_info WHERE id = "+user_id+"";
谢谢。
编辑:(这可能有助于解释......) 客户端能够执行某些操作,我想阻止客户过快地执行这些多个操作。当客户端操作发送到服务器时,我检查数据库是否能够执行操作。如果操作完成,我更新数据库,以便玩家在一段时间后才能动作。如果玩家点击太快,他会向服务器发送多个调用,并且在db中更新操作状态之前,如果玩家可以执行操作,则检查数据库的if条件返回true(他可以执行此操作),但不应该。信息的更新速度不够快。