gpt4 book ai didi

sql - 如何强制执行 1 到 n 的关系

转载 作者:行者123 更新时间:2023-12-04 13:38:53 25 4
gpt4 key购买 nike

我正在开发一个在线多人棋盘游戏并有一个 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 个玩家会失败。
  • 最佳答案

    几个建议:

    1) 当您尝试写入 tbPlayersInGame 表时,首先执行 SELECT 以确保游戏未满,然后插入表。将此 SELECT 和 INSERT INTO 包装在事务隔离级别设置为可序列化的事务中。

    2) 没有单独的 tbPlayersInGame 表,而是在 tbGame 中有 2 个字段:Player1Id、Player2Id

    关于sql - 如何强制执行 1 到 n 的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7800798/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com