MySQL 仅当存在 "enabled" 特征时,两个值的唯一组合

MySQL unique combination of two values only when "enabled" feature is present

A table 有两列 foliocompany 以及第三列 启用。仅当 enabled 设置为 true 或“truthy”值时,前两列的组合必须是唯一的。

如何实施约束以保证始终执行上述规则?

可能:

folio | company | enabled
    2         B   false
    2         B   false
    2         B   true

不可能:

folio | company | enabled
    2         B   false
    2         B   true
    2         B   true

谢谢

MYSQL 不支持此类约束。

您应该改用存储过程来插入数据,这样您就可以进行一些检查和验证。

参见参考:Unique Constraint with conditions in MYSQL

Insted of false use NULL,mysql 将 NULL 视为 UNIQUE 约束中的不同值,并保持原样。 然后在所有 3 列上放置一个唯一键。

Test

只需重复最后一次插入,它不会让你。