我有一个包含以下列的表格:
(id, col_1, col_2)
其中“id”是主键(自动增量)。
我想让 col_1
和 col_2
成为“独特组合”。
例如,如果我插入数据...
(.., col_1, col_2 ) = (.., 'A', 'B')
...接下来,我不应该被允许插入以下内容:
(.., col_1, col_2 ) = (.., 'A', 'B')
(.., col_1, col_2 ) = (.., 'B', 'A') #because it already exists, in another order:('A','B')
我使用 UNIQUE(col_1, col_2)
成功阻止了第一个案例...
但是似乎“反向组合” (.., 'B', 'A')
是允许的。
我怎样才能阻止这个?
最佳答案
尝试后,它确实不像创建另一个唯一索引那么容易。
这似乎是 MySQL 中的一个奇怪的缺陷。不过,解决方法可以是始终将较小的值存储在 col_1 中,将较大的值存储在 col_2 中(即当您不喜欢触发器时):
INSERT INTO your_table (col_1, col_2) VALUES (LEAST('A', 'B'), GREATEST('A', 'B'));
您可以找到这些函数的文档 here .
关于php - MySQL 和 UNIQUE 列 : how to avoid duplicates?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43094597/