You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Decision表创建条件为id_decision=1的唯一索引?

实现请求仅能被接受一次的唯一约束

你需要的是部分唯一索引,用来确保每个请求(id_request)只能存在一条标记为“已接受”(id_decision=1)的记录,完全匹配你的业务规则。以下是不同数据库的实现方式:

PostgreSQL / SQL Server

直接创建带过滤条件的唯一索引即可,语法简洁高效:

CREATE UNIQUE INDEX unique_decision_accepted
ON Decision(id_request)
WHERE id_decision = 1;
  • 索引仅作用于id_decision=1的记录,确保同一id_request不会出现多条已接受的记录
  • id_decision≠1的记录不受此索引限制,可自由提交多次

MySQL 8.0.16+

MySQL通过函数型唯一索引实现类似逻辑,利用唯一索引不约束NULL值的特性:

CREATE UNIQUE INDEX unique_decision_accepted
ON Decision(id_request, (CASE WHEN id_decision = 1 THEN 1 ELSE NULL END));
  • 当id_decision=1时,表达式返回固定值1,此时会强制id_request唯一
  • 当id_decision≠1时,表达式返回NULL,不会触发唯一约束,允许重复提交

注意:你最初写的CREATE INDEX是普通索引,无法保证唯一性,必须使用CREATE UNIQUE INDEX才能实现业务要求的约束。

内容的提问来源于stack exchange,提问作者imstuckaf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 20:35:24