如果我有一个包含两列的连接表,TeamA 和 TeamB,我如何确保每一对都是唯一的?
显然我可以在这些列上放置一个唯一的复合索引,但这只会确保顺序 A、B 而不是 B、A 的唯一性,对吗?
TeamA | TeamB
-------------
red | blue
pink | blue
blue | red
如您所见,Red vs. Blue 已被指定为第一条记录,然后再次指定为最后一条记录。这应该是非法的,因为他们已经面对面了。
编辑:另外,还有办法处理 SELECT 的情况吗?还是更新?删除?等等。
另外,主队或客队的想法已经被提出,这在这里可能很重要。在考虑如何在数据库端构建括号系统时,我想到了这个最初的概念。
最佳答案
定义一个约束,例如,A 列中的值必须(按字母顺序或数字)小于 B 列中的值:因此您可以插入 {blue,red} 但不能插入 { red,blue} 因为蓝色小于红色。
关于sql - 作为 A、B 或 B、A 的唯一列对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/844646/