Това е недоразумение.UNIQUE
ограничението прави точно какво искаш. Множество NULL
стойностите могат да съществуват едновременно в колона, дефинирана UNIQUE
.
Ръководството:
По принцип едно уникално ограничение се нарушава, когато има повече от един ред в таблицата, където стойностите на всички колони, включени в ограничението, са равни. Две нулеви стойности обаче не се считат за равни в това сравнение. Това означава, че дори при наличието на уникално ограничение е възможно да се съхраняват дублиращи се редове, които съдържат нулева стойност в поне една от ограничените колони. Това поведение отговаря на стандарта SQL, но чухме, че други SQL бази данни може да не следват това правило. Затова бъдете внимателни, когато разработвате приложения, които са предназначени да бъдат преносими.
Удебелен акцент мой.
Имайте предвид, че типовете знаци позволяват празен низ (''
), което не a NULL
стойност и ще задейства уникално нарушение, точно както всяка друга стойност, различна от нула, когато се въведе в повече от един ред.