我有这张桌子:
- XPTO_TABLE (id,obj_x,date_x,type_x,status_x)
我想创建一个唯一的约束,仅当status_x<>时才应用于字段(obj_x,type_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:看起来您正在尝试确保您的表只包含一个状态为<> 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);
希望能帮助到你
Vishad