gpt4 book ai didi

Mysql UNIQUE 约束仅在一个字段具有特定值时适用

转载 作者:行者123 更新时间:2023-11-29 10:40:42 26 4
gpt4 key购买 nike

我希望这能以某种方式起作用:

我有一个包含 3 列的 Mysql 表:

id = int
state = enum('visible', 'moderated', 'deleted')
user_id = int

任何用户都不应拥有超过 1 个条目,即“可见”或“审核”条目,但他可以拥有无​​数个“已删除”条目。

因此,我需要 user_id 上的唯一 key ,该 key 仅在状态为“可见”或“已审核”时适用

最佳答案

基本上有两个选项,第一个选项相当简单,但需要更改表结构和应用程序逻辑。

如果您使用 NULL 值而不是“已删除”,则对于给定的 user_id,您可以拥有任意数量的“已删除”行(在 (user_id, state) 上具有唯一约束)。你的表结构将是这样的:

id = int
state = enum('visible', 'moderated') NULL
user_id = int

另一个选项涉及检查更新后/插入后触发器,无论您是否没有破坏约束并抛出“sql 异常”视频 https://dev.mysql.com/doc/refman/5.5/en/signal.html

关于Mysql UNIQUE 约束仅在一个字段具有特定值时适用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45536851/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com