Dan*_*ank 4 mysql constraint mysql-5.6
假设我有四列
| x | y | z | w |
Run Code Online (Sandbox Code Playgroud)
我想要以下约束:
如果w
是NULL
,那么x
,y
,z
必须是唯一的。
如果w
不是NULL
,则x
,y
,w
必须是唯一的。
这可能吗?
首先,对于约束编号 2,不需要什么特别的。一个UNIQUE
约束忽略-和接受-NULL
值,因此一个简单的唯一约束(w,x,y)
将工作得很好执行这一点。
对于约束编号 1,我认为 5.6 版中没有使用 DDL 的方法,因此您最好的选择可能是 @stefan 的触发器解决方案。
如果可以升级到 5.7,则可以GENERATED
在其上使用列和唯一索引:
ALTER TABLE t
ADD wz int GENERATED ALWAYS AS (CASE WHEN w IS NULL THEN z END),
ADD UNIQUE INDEX x_y_z_uq (x, y, wz) ;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
538 次 |
最近记录: |