如何在mysql的2列之间有2路唯一约束
问题描述:
是否可以在mysql列中设置双向唯一约束?如何在mysql的2列之间有2路唯一约束
我有两列像发送器和接收器,但是我已经设置了复合唯一约束这些,它只能举例来说,如果我在接收器中多次发送者输入1和2并不起作用:
如果我有1发件人和2收件人 和 2发件人和1收件人
我希望我的问题是明确的。
答
这在MySQL中是不可能的。您只能拥有跨多个列的唯一约束正如你所看到的,在那里你可以排除重复值
sender=1, receiver=2
你不能有一个唯一约束排除约束的反面,以及在那里,如果你有
sender=1, receiver=2
它也排除了
sender=2, receiver=1
嗨@davidethell所以我应该使用MySQL的查询,以验证是否存在发送者和接收者的数据添加新数据,因此前有是双向的uniwie? – ABI
是的,您可以在创建记录之前查看发件人和收件人。另一种方法是创建一个ON INSERT触发器,发送一个失败信号来停止插入。尝试[这里的答案](https://stackoverflow.com/questions/2538786/how-to-abort-insert-operation-in-mysql-trigger)。 – davidethell