我需要为我的订阅表创建一个唯一的约束,不允许一个用户同时拥有两个活动订阅。我创建了迁移并更新了我的实体类:
CREATE UNIQUE INDEX unique_user_id_status ON user_subscription_plan (user_id, status)
字符串
但是我刚刚意识到status字段可以有多个值(active,inactive,processed),所以我应该只有在两个状态都是active时才有这个约束,但是我可以有两个处理的状态。它是正确的吗?那么我如何在实体类上做到这一点?任何建议都非常感谢。
1条答案
按热度按时间kgqe7b3p1#
当你使用MySQL时,看看 * 基于函数的索引 * 是否有帮助。
字符串
它不允许您插入两行状态为
active
的行,但不会阻止您插入任意数量的其他状态的行(您提到了inactive
和processed
)。看看fiddle的演示。