Mam stolik:
table votes (
id,
user,
email,
address,
primary key(id),
);
Teraz chcę, aby kolumny użytkownik, adres e-mail, adres były unikalne (razem).
Jak to zrobić w MySql?
Oczywiście przykład jest tylko ... przykładem. Więc proszę nie martw się semantyką.
Mam tabelę MySQL:
a UNIKALNY KLUCZ działa zgodnie z oczekiwaniami, pozwala na wiele NULL wierszy id_box_elements i id_router.
Korzystam z MySQL 5.1.42, więc prawdopodobnie pojawiła się aktualizacja omawianego wyżej problemu. Na szczęście działa i mam nadzieję, że tak pozostanie.
źródło
Wielokolumnowe unikalne indeksy nie działają w MySQL, jeśli masz wartość NULL w wierszu, ponieważ MySQL traktuje NULL jako unikalną wartość i przynajmniej obecnie nie ma logiki do obejścia go w indeksach wielokolumnowych. Tak, zachowanie jest szalone, ponieważ ogranicza wiele uzasadnionych aplikacji indeksów wielokolumnowych, ale takie właśnie jest ... Na razie jest to błąd, który został oznaczony jako „nie naprawi” na MySQL śledzenie błędów ...
źródło
ENGINE BDB
, i 2) jest to udokumentowane zachowanie, chociaż IMHO nie zostało wystarczająco udokumentowane zbyt jawnie, biorąc pod uwagę, jak zaskakujące / nieprzyjemne może być. Zobacz dyskusję na temat błędu MySQL 25544 bugs.mysql.com/bug.php?id=25544 .Próbowałeś tego?
źródło
UNIQUE KEY
thekey` (user
,email
,address
) `. Używam MYSQL w wersji 5.5.24 Możesz ustawić to nawet w PHPMYADMIN, jeśli go używasz. Używam wersji PMA 3.5.1.Działa to dla mysql w wersji 5.5.32
źródło
MySql 5 lub nowszy zachowuje się tak (właśnie przetestowałem):
Przykład: PRODUCT_NAME, PRODUCT_VERSION „szkło”, zerowe „szkło”, zerowe „wino”, 1
Teraz, jeśli spróbujesz ponownie wstawić („wino” 1), zgłosi naruszenie zasad ograniczenia. Mam nadzieję, że to pomoże
źródło
Możesz dodać wiele kolumn unikalne indeksy poprzez phpMyAdmin . (Testowałem w wersji 4.0.4)
Przejdź do strony struktury tabeli docelowej. Dodaj unikalny indeks do jednej z kolumn. Rozwiń listę Indeksy na dole strony struktury, aby zobaczyć dodany właśnie unikalny indeks. Kliknij ikonę edycji, aw kolejnym oknie dialogowym możesz dodać dodatkowe kolumny do tego unikalnego indeksu.
źródło
Robię to tak:
Moja konwencja dotycząca wyjątkowego
index_name
toTableName_Column1_Column2_Column3_uindex
.źródło
Aby dodać unikalny indeks, wymagane są:
1) nazwa_tabeli
2) nazwa_indeksu
3) kolumny, do których chcesz dodać indeks
W twoim przypadku możemy stworzyć unikalny indeks w następujący sposób:
źródło
Jeśli chcesz uniknąć duplikatów w przyszłości. Utwórz kolejną kolumnę, powiedz id2.
Teraz dodaj unikat do dwóch kolumn:
źródło
Jeśli tworzysz tabelę w mysql, użyj następujących poleceń:
źródło
Najpierw pozbądź się istniejących duplikatów
Następnie dodaj unikalne ograniczenie
Sprawdź ograniczenie za pomocą
Pamiętaj, że użytkownik, adres e-mail i adres będą uważane za niepowtarzalne, jeśli którykolwiek z nich ma w nim wartość zerową.
źródło
Dla PostgreSQL ... Nie działało to dla mnie z indeksem; dał mi błąd, więc zrobiłem to:
PostgreSQL nadał unikatowemu indeksowi własną nazwę. Myślę, że możesz zmienić nazwę indeksu w opcjach tabeli, jeśli trzeba ją zmienić ...
źródło