Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie kann man eine Datenbanktabelle so einschränken, dass nur eine Zeile einen bestimmten Wert in einer Spalte haben kann?

Verwenden Sie einen funktionsbasierten Index:

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

Oracle indiziert nur Schlüssel, die nicht vollständig null sind, und der CASE-Ausdruck stellt hier sicher, dass alle 'NO'-Werte in Nullen geändert und somit nicht indiziert werden.