带条件的 MySQL 唯一索引

标签 mysql indexing constraints unique conditional-statements

我需要对表进行索引或约束的唯一性检查,但这只有在 bool 字段的值为真时才会发生。如果它是假的,那么有一个重复的行就可以了。我不认为这在 mysql 中有约束或索引是可能的,那么有没有其他可能的解决方案来解决这个问题?

最佳答案

如果您可以稍微更改字段的定义,将“1”表示为“true”,将“NULL”表示为false,那么您可以在这两列上使用唯一索引:

create unique index idx_table_col1_col2 on table(col1, col2)

NULL 值可以在唯一索引中重复。

或者,您必须使用触发器来强制执行此条件。

关于带条件的 MySQL 唯一索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28532830/

相关文章:

constraints - 如何使用 CP-SAT 求解器或其他工具来查找具有行、列和管(代表学校类(class)、学期和天数)约束的 3D 数组?

MySQL 查询 GROUP BY 日/月/年

mysql - 大量写入/插入会影响数据库索引吗?

MySQL 查找比需要更多的行(索引问题)

r - 在 R 中,负索引有什么作用?

mysql - 在sql中使用两个检查约束

MySQL 术语 "constraints"与 "foreign keys"的区别?

mysql - 以非 root 身份登录 mysql 时遇到问题

mysql - 从具有一对多关系的 MYSQL 连接创建单行

MYSQL 查找表中的空字段