Buu*_*rin 5 sql locking integrity
我正在开发一个在线muiltiplayer棋盘游戏并且有一个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.
Run Code Online (Sandbox Code Playgroud)
我觉得我需要两件事:
一些建议:
1) 当您尝试写入 tbPlayersInGame 表时,首先执行 SELECT 以确保游戏未满,然后插入表。将此 SELECT 和 INSERT INTO 包装在事务中,并将事务隔离级别设置为可序列化。
2) 没有单独的 tbPlayersInGame 表,而是 tbGame 中有 2 个字段:Player1Id、Player2Id