sql >> Database teknologi >  >> RDS >> Oracle

Hvordan begrænser man en databasetabel, så kun én række kan have en bestemt værdi i en kolonne?

Brug et funktionsbaseret indeks:

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

Oracle indekserer kun nøgler, der ikke er helt null, og CASE-udtrykket her sikrer, at alle 'NO'-værdierne ændres til nulls og derfor ikke indekseres.



  1. Test af ODBC-laget

  2. PLSQL dynamisk forespørgsel

  3. Den rigtige måde at få brugernavn og adgangskode fra forbindelsesstrengen?

  4. Hvordan skriver man en null sikker sammenligne <=> i ren SQL?