Oracle
 sql >> Base de données >  >> RDS >> Oracle

Contrainte unique conditionnelle avec plusieurs champs dans oracle db

@jamesfrj :il semble que vous essayez de vous assurer que votre table ne contient qu'un seul enregistrement pour lequel status <>5 .

Vous pouvez essayer de créer un index fonctionnel unique en concaténant les colonnes, comme indiqué ci-dessous

      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);

J'espère que ça aide

Visad