symfony 取决于字段值的唯一约束

igetnqfo  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(99)

我需要为我的订阅表创建一个唯一的约束,不允许一个用户同时拥有两个活动订阅。我创建了迁移并更新了我的实体类:

CREATE UNIQUE INDEX unique_user_id_status ON user_subscription_plan (user_id, status)

字符串
但是我刚刚意识到status字段可以有多个值(active,inactive,processed),所以我应该只有在两个状态都是active时才有这个约束,但是我可以有两个处理的状态。它是正确的吗?那么我如何在实体类上做到这一点?任何建议都非常感谢。

kgqe7b3p

kgqe7b3p1#

当你使用MySQL时,看看 * 基于函数的索引 * 是否有帮助。

create table test (user_id int, status varchar(20));

create unique index ui1_test on test
  (user_id, (case when status = 'active' then status end));

字符串
它不允许您插入两行状态为active的行,但不会阻止您插入任意数量的其他状态的行(您提到了inactiveprocessed)。
看看fiddle的演示。

相关问题