http://dev.mysql.com/doc/refman /5.0/en/create-index.html
„Indeks UNIQUE tworzy ograniczenie, tak że wszystkie wartości w indeksie muszą być różne. Przy próbie dodania nowego wiersza z wartością klucza, która pasuje do istniejącego wiersza, wystąpi błąd. To ograniczenie nie dotyczy wartości NULL, z wyjątkiem Mechanizm przechowywania BDB. W przypadku innych silników indeks UNIQUE dopuszcza wiele wartości NULL dla kolumn, które mogą zawierać NULL.
Więc nie, nie możesz sprawić, by MySQL traktował NULL jako unikalną wartość. Sądzę, że masz kilka możliwości:możesz zrobić to, co sugerowałeś w swoim pytaniu i zapisać „wartość specjalną” zamiast null, lub możesz użyć silnika BDB dla tabeli. Nie sądzę jednak, aby ta niewielka różnica w zachowaniu uzasadniała dokonanie niezwykłego wyboru silnika pamięci masowej.