需求:
一张表里有 4 个字段:a,b,c,d 现在我想要在 d 的值为 1 和 2 的时候联合唯一索引(a,b,c)生效,在 d 为其他值的时候不生效,该怎么实现呢?
我在网上搜了一下,貌似很多数据库都可以实现这个需求,就只有 Mysql 找不到相关的解决方案。万般无奈只能来 v 站上求助了。
1
honam 2017-09-20 16:30:30 +08:00
要是我没猜错,楼主要做的功能是逻辑删除,但是又想用唯一索引。
|
2
ipconfiger 2017-09-20 16:34:25 +08:00
MySQL 的索引弱到爆, 你就别想了
|
3
AnonymousAccout OP @honam 是插入和更新的时候要用到=。=因为比较懒 不想通过业务代码检测唯一性,想通过数据库本身来实现
|
4
liprais 2017-09-20 16:42:55 +08:00
不能
|
5
jhdxr 2017-09-20 18:55:21 +08:00 1
索引做不到,但是你可以用触发器。。。
|
6
petelin 2017-09-20 20:35:05 +08:00 1
有一种比较猥琐的方法, 在加多 3 个列, b1, c1, d1, 建索引 (a, b1, c1, d1).... 然后不需要唯一索引的写的时候用随机, 需要的正常写业务数据,,,, (我是把 a 当做条件列了)
|
7
wdlth 2017-09-20 21:15:34 +08:00 1
不清楚你提到的很多数据库可以实现是什么意思?
单纯的 DDL 应该没办法吧,需要用触发器或者存储过程这类可编程的东西。 |
8
alcarl 2017-09-20 21:21:29 +08:00 via Android 1
加一列 e 吧 abce 设成唯一索引,插入或者更新时如果 d 为 1 或者 2,e 列就取一个定值比如 aaa,如果不是则取行 id
|