sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo restringir una tabla de base de datos para que solo una fila pueda tener un valor particular en una columna?

Use un índice basado en funciones:

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

Oracle solo indexa claves que no son completamente nulas, y la expresión CASE aquí asegura que todos los valores 'NO' se cambien a nulos y, por lo tanto, no se indexen.