sql >> Databasteknik >  >> RDS >> Oracle

Hur begränsar man en databastabell så att bara en rad kan ha ett visst värde i en kolumn?

Använd ett funktionsbaserat index:

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

Oracle indexerar bara nycklar som inte är helt null, och CASE-uttrycket här säkerställer att alla 'NO'-värden ändras till null och därför inte indexeras.



  1. Vackra block av pannplåt

  2. INFOGA med LIST i lagrad procedur

  3. CV för XID höjt 0:okänt

  4. Behöver jag verkligen göra mysql_close()