我有这张桌子:
XPTO_TABLE (id, obj_x, date_x, type_x, status_x)
我想创建一个(obj_x, date_x, type_x)
仅在时才适用于字段的唯一约束status_x <> 5
。
我试图创建一个,但是Oracle说:
line 1: ORA-00907: missing right parenthesis
CREATE UNIQUE INDEX UN_OBJ_DT_TYPE_STATUS
ON XPTO_TABLE(
(CASE
WHEN STATUS_X <> 5
THEN
(OBJ_X,
TO_CHAR (DATE_X, 'dd/MM/yyyy'),
TYPE_X)
ELSE
NULL
END));
什么是正确的语法?
@jamesfrj:您似乎正在尝试确保您的表应只包含一个记录status <>5
。
您可以尝试通过串联各列来创建唯一的功能索引,如下所示
create table XPTO_TABLE (id number,
obj_x varchar2(20),
date_x date,
type_x varchar2(20),
status_x varchar2(20)
);
create unique index xpto_table_idx1 on XPTO_TABLE(case when status_x <>'5' THEN obj_x||date_x||type_x||STATUS_x ELSE null END);
希望能帮助到你
维沙德
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句