这个SQL约束可以更简单地编写吗?

c24*_*24w 1 sql constraints h2

澄清 - 表中最多有4个不同的玩家,由他们的ID引用.我想强制执行此操作,即没有两个ID是相同的.

此外,因为它最多4个玩家,有些可能是空的.可能有很多这样的空值是一个坏主意吗?我不认为这样做,但只是为了确定,是否会null == null返回错误?

...
CHECK (playerid1 <> playerid2)
  AND (playerid1 <> playerid3)
  AND (playerid1 <> playerid4)
  AND (playerid2 <> playerid3)
  AND (playerid2 <> playerid4)
  AND (playerid3 <> playerid4)
...
Run Code Online (Sandbox Code Playgroud)

谢谢!

Fra*_*itt 10

我会为此使用一个单独的表:

 create table game_players (
      game_id number, player_id number, player_position number
    );
Run Code Online (Sandbox Code Playgroud)

然后你可以添加

  • game_id +玩家ID的UNIQUE约束(强制玩家每场比赛不会超过一次)
  • game_id + player_position的UNIQUE约束(确保一个位置最多被一个玩家占用)
  • player_position的CHECK约束强制执行它只有值1,2,3或4

这应该以更清洁(恕我直言)的方式实现你想要的.