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

Comment contraindre une table de base de données afin qu'une seule ligne puisse avoir une valeur particulière dans une colonne ?

Utilisez un index basé sur les fonctions :

create unique index only_one_yes on mytable
(case when col='YES' then 'YES' end);

Oracle n'indexe que les clés qui ne sont pas complètement nulles, et l'expression CASE ici garantit que toutes les valeurs 'NO' sont changées en nulles et donc non indexées.