【发布时间】:2017-04-22 15:20:02
【问题描述】:
我正在尝试在 MySQL 中实现以前从未听说过的事情(也许是这样,研究对我没有多大帮助)。
我要做的是在 MySQL 中跨两列强制执行唯一性。我的意思不是设置 UNIQUE(column1,column2) 而是设置以下两个条件:
- 如果 column1 中存在某个值,则不能在 column1 中重复(与设置 UNIQUE(column1) 相同)。
- 如果某个值存在于任一列中,则该值不能存在于另一列中。
因此,对于数据集 {column1,column2},如果 {1,2}, {3,4}, {5,6} 是已经存在的数据,那么这两列都不能有上述任何一个新数据的数据项,即新数据项 {x,y} 其中 x=NOT{column1} AND y=NOT{column2} AND x!=y
这可能吗?请帮帮我。谢谢。
【问题讨论】:
-
这里需要一个触发器
-
您需要设置插入和更新触发器来执行此操作。
-
嗯,我明白了。我希望有一个内置的解决方案。我猜 column1 和 column2 是具有相同选择的 ENUM 这一事实也无济于事。感谢您的回复。
-
实现这一目标的最佳方法是什么?触发器还是存储过程?在实现简单性和执行速度方面?