我有这张桌子:
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
原文地址:https://www.jb51.cc/mssql/83990.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。