sql - 在具有 X 和 Y 列的表中,是否可以放置约束以防止 X == Y 用于任何一条记录?
问题描述
例如,假设我正在为一个足球联赛建模。我有一张桌子teams
和一张桌子games
。一个游戏有两个外键,home_team_id
并且away_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的运行示例。
推荐阅读
- ruby - Ruby回文布尔值返回false
- javascript - Javascript警报仅在chrome中阻止音频循环
- javascript - Axios/Vue - 防止 axios.all() 继续执行
- mysql - 我可以就我的个人 MySQL 项目获得一些意见吗?特别是多对多关系
- python - 使用 wget 下载指定大小的 Twitter 图片
- r - 在 R 中将 igraph 转换为网络对象时出错
- python-3.x - 如何提取本文的正文?
- python - 使用熊猫重塑数据框
- r - 使用 Simex 软件包纠正测量误差
- javascript - 未找到 VueJS 元素引用