mysql的带特定值的联合唯一性约束可以吗?

MySql 码拜 9年前 (2016-02-04) 1348次浏览
例如这个表
CREATE TABLE `COMPOSITE_UNIQUE_KEY` (
`ID` int(11) NOT NULL,
`NAME` varchar(255) NOT NULL,
`TYPE` int(11) NOT NULL,
`IS_DELETE` tinyint(1) NOT NULL DEFAULT “0”,
`UPDATE_TIME` datetime DEFAULT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `compositeUnique` (`NAME`,`TYPE`,`IS_DELETE`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
本人想NAME,TYPE,IS_DELETE具有联合唯一性约束,但是只有当IS_DELETE=0时生效,这样怎么弄?
举个例子
NAME   TYPE IS_DELETE
a 0 0
b 0 0
这样是不被允许的
a 0 1
b 0 0
这样是可以的
a 0 1
b 0 1
这样也可以
解决方案

15

暂时没有。 只有针对列值的约束 还没有针对特定值的约束 。

25

没有办法直接通过索引约束实现,可以在INSERT/UPDATE触发器中进行检查。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明mysql的带特定值的联合唯一性约束可以吗?
喜欢 (0)
[1034331897@qq.com]
分享 (0)