0

我正在为一个小游戏构建一个匹配系统。我的表格保存了所有寻找对手的玩家,如下所示:

lobby
----------
userID
points
range
opponentID

每隔 5 秒,脚本会尝试在一定的分数范围内寻找对手。

UPDATE lobby SET
    opponentID = {myUserID}
WHERE points >= {myPoints} - {myRange} AND points <= {myPoints} + {myRange}
    AND opponentID = 0 AND userID != {myUserID}
ORDER BY ABS(points - {myPoints}) ASC
LIMIT 1

如果有受影响的行,我会从大厅中删除当前玩家并获取对手 ID:

DELETE FROM lobby
WHERE userID = {myUserID}

SELECT userID FROM lobby
WHERE opponentID = {myUserID}

现在我担心有人在 UPDATE 和 DELETE 之间分配当前用户。我怎样才能防止这种情况?我可以结合更新和删除吗?

4

0 回答 0