在包含 X 和 Y 列的 table 中,是否可以设置约束以防止任何一条记录的 X == Y?

In a table with columns X and Y, is it possible to place a constraint to prevent X == Y for any one record?

例如,假设我正在为足球联赛建模。我有 teams 的 table 和 games 的 table。 游戏有两个外键,home_team_idaway_team_id。对于单场比赛,决不应该是 home_team_id = away_team_id(球队不能与自己比赛)。

我是防止坏数据进入数据库的坚持者。是否可以添加一个约束来防止这种情况发生?

请注意,我问的是一般情况,而不是特定于 SQL 的任何一种口味。

你可以这样做:

create table t (
  x int,
  y int,
  constraint chk1 check (x <> y)
);

insert into t (x, y) values (123, 456); -- works

insert into t (x, y) values (200, 200); -- fails

请参阅 db<>fiddle 中的 运行 示例。