是否有可能有一个MySQL约束要求列是唯一的*除非*它等于特定值?

Spe*_*ktr 6 mysql sql

假设我有一个表格,我希望MY_COLUMN的值是唯一的,除非值为'xyz'.换句话说,MY_COLUMN可能是多行中的'xyz',但所有不是'xyz'的值必须是唯一的.是否可以设置实现此目的的约束?

p.s*_*w.g 3

根据文档

UNIQUE 索引创建一个约束,使得索引中的所有值都必须不同。如果您尝试添加键值与现有行匹配的新行,则会发生错误。对于所有引擎,UNIQUE 索引允许可以包含 NULL 的列有多个 NULL 值。

因此,创建一个可为空的列,当您查询表时只需使用ISNULL(MY_COLUMN, 'xyz').