Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como restringir uma tabela de banco de dados para que apenas uma linha possa ter um valor específico em uma coluna?


Use um índice baseado em função:
create unique index only_one_yes on mytable
(case when col='YES' then 'YES' end);

O Oracle indexa apenas chaves que não são completamente nulas, e a expressão CASE aqui garante que todos os valores 'NO' sejam alterados para nulos e, portanto, não indexados.