我正在开发一个在线多人游戏,并有一个SQL服务器问题。
假设这个游戏只允许两名玩家参加。当游戏创建时,创建者被添加为第一个用户。
此时,两个用户可能同时尝试加入游戏。其中一个用户应该被阻止。
我的数据库模式如下:
假设这个游戏只允许两名玩家参加。当游戏创建时,创建者被添加为第一个用户。
此时,两个用户可能同时尝试加入游戏。其中一个用户应该被阻止。
我的数据库模式如下:
tbGame - contains a list of all games. PrimaryKey is GameId
tbPlayers - contains a list of all registered users. PrimaryKey is PlayerId
tbPlayersInGame - contains a list of all players in each game. Foreign key
relations to tbGame and tbPlayers.
我觉得我需要两件事情:
- 一种基于GameId锁定tbPlayersInGame的方法。这将用于向游戏中添加玩家时使用。从我所读的内容来看,似乎适合使用键范围锁(在GameId上)。
- 一种强制实施1对2关系的方法,以便尝试添加第3个玩家会失败。
WHERE
子句 - 我的意思是将其作为SELECT
的一部分...进行编辑。 - Clockwork-Muse