如何仅为具有今天日期的记录创建唯一索引?

How to create unique index only for records with today's date?

我想在 oracle 中为每日队列数添加唯一约束。© 有如下数据;

   DATE       QUEUE
21.07.2019      1 
21.07.2019      2 
22.07.2019      1 
22.07.2019      2 
22.07.2019      3 

假设今天:21.07.2019 我可以添加像 QUEUE = 3 这样的记录 如果今天:22.07.2019 我无法添加 QUEUE = 3

我试过这个:

create unique index hbs_unique_sira on HASTA_BIRIM_SEVK
(case when 
SEVK_TARIHI > TRUNC(SYSDATE) AND SEVK_TARIHI < SYSDATE  
THEN randevu_sira_id 
ELSE null 
END)

但我遇到了这样的错误:ORA-01743:只能索引纯函数

您正在查找复合材料 UNIQUE INDEX

create unique index hbs_unique_sira on t
(  TRUNC(dt),
   queue
);

如果您希望默认在日期字段中存储 SYSDATE,您可以避免在 create index 语句中使用 SYSDATE

CREATE TABLE t2(
   dt     DATE  DEFAULT TRUNC(SYSDATE)
  ,QUEUE INTEGER  
);

create unique index hbs_unique_sira2 on t2
(  dt,
   queue
);

这两种方法都达到了预期的效果,即每天排队的条目不能超过一个。

这是一个 Dbfiddle Demo