sql >> Database >  >> RDS >> Oracle

Hoe een databasetabel te beperken, zodat slechts één rij een bepaalde waarde in een kolom kan hebben?

Gebruik een op functies gebaseerde index:

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

Oracle indexeert alleen sleutels die niet volledig null zijn, en de CASE-expressie hier zorgt ervoor dat alle 'NO'-waarden worden gewijzigd in nulls en dus niet worden geïndexeerd.



  1. Hoe de korte maandnaam van een datum in MySQL te krijgen

  2. SQL Server:selecteer de nieuwste rijen waarvan de som overeenkomt met een waarde

  3. SocketException:zo'n host is niet bekend

  4. Rails SQL-query met % jokertekens werkt in SQLite, maar niet in PostgreSQL?