现在我有了下面的users表,如果id的前缀为auth0|
,则希望电子邮件列是唯一的。
列 | |
---|---|
id | 文本 |
电子邮件 | 文本不为空 |
CREATE UNIQUE INDEX auth0_users_email_idx
ON users ((CASE WHEN id NOT LIKE 'auth0|%' THEN email END));
如果前缀匹配,则CASE返回NULL,不检查其唯一性。否则,它将返回电子邮件。
但是MySQL不允许对TEXT列进行索引。在索引表达式中,更改列数据类型或将值CAST为CHAR。
演示小提琴
PS。注意双括号——它们是强制性的。外括号封装索引表达式,内括号封装表达式,converse为标量值。