Jeśli w definicji tabeli w SQL trzeba zapewnić, że wartości w danym polu (kolumnie) nie mogą się powtarzać, stosuje się ograniczenie UNIQUE. Taki constraint powoduje, że baza odrzuci próbę wstawienia lub modyfikacji rekordu, która prowadziłaby do duplikatu w kolumnie (lub w kombinacji kilku kolumn, jeśli unikalność zdefiniowano wielokolumnowo).
Dlaczego pozostałe opcje nie pasują:
- DEFAULT służy do ustawienia wartości domyślnej, gdy aplikacja nie poda wartości w INSERT. Nie kontroluje powtórzeń; wiele wierszy może mieć tę samą wartość domyślną.
- IDENTITY to mechanizm spotykany w części systemów baz danych (np. jako sposób autoinkrementacji). Choć w praktyce często prowadzi do różnych wartości, nie jest ogólnym, przenośnym atrybutem SQL definiującym "zakaz duplikatów" i nie zastępuje constraintu unikalności jako reguły biznesowej.
- NOT NULL oznacza jedynie, że pole nie może być puste (NULL). Nadal można wstawić tę samą wartość wielokrotnie, więc nie spełnia warunku "nie mogą się powtarzać".
W praktyce w projektach webowych UNIQUE stosuje się m.in. dla loginów, e-maili, numerów dokumentów lub innych identyfikatorów, które muszą być niepowtarzalne niezależnie od tego, czy aplikacja ma walidację po stronie serwera. Constraint w bazie jest dodatkowym, pewnym zabezpieczeniem integralności danych.