如何仅为具有今天日期的记录创建唯一索引?
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
我想在 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