sql – oracle db中具有多个字段的条件唯一约束

前端之家收集整理的这篇文章主要介绍了sql – oracle db中具有多个字段的条件唯一约束前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这张桌子:
  1. XPTO_TABLE (id,obj_x,date_x,type_x,status_x)

我想创建一个唯一的约束,仅当status_x<>时才应用于字段(obj_x,type_x). 5.

我试图创建这个,但Oracle说:

  1. line 1: ORA-00907: missing right parenthesis
  1. CREATE UNIQUE INDEX UN_OBJ_DT_TYPE_STATUS
  2. ON XPTO_TABLE(
  3. (CASE
  4. WHEN STATUS_X <> 5
  5. THEN
  6. (OBJ_X,TO_CHAR (DATE_X,'dd/MM/yyyy'),TYPE_X)
  7. ELSE
  8. NULL
  9. END));

什么是正确的语法?

解决方法

@jamesfrj:看起来您正在尝试确保您的表只包含一个状态为<> 5的记录.

您可以尝试通过连接列来创建唯一的功能索引,如下所示

  1. create table XPTO_TABLE (id number,obj_x varchar2(20),date_x date,type_x varchar2(20),status_x varchar2(20)
  2. );
  3.  
  4. 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

猜你在找的MsSQL相关文章