Mam już istniejącą tabelę z polem, które powinno być unikalne, ale nie jest. Wiem o tym tylko dlatego, że wprowadzono do tabeli wpis, który miał taką samą wartość jak inny, już istniejący wpis, a to powodowało problemy.
Jak sprawić, by to pole akceptowało tylko unikatowe wartości?
mysql
unique-constraint
Lothar
źródło
źródło
If IGNORE is specified, only the first row is used of rows with duplicates on a unique key, The other conflicting rows are deleted.
DokumentyALTER
tego.ALTER IGNORE
może nadal powodować błąd Duplicate na MySQL w wersji> 5.5 i na InnoDB ze względu na bezpieczeństwo danych. Jeśli jesteś tylko pewien, że zachowanie pierwszego ze zduplikowanych wierszy jest właściwe, spróbujset session old_alter_table=1
. Nie zapomnij go odłożyć. mysqlolyk.wordpress.com/2012/02/18/…Po prostu zapisz to zapytanie w swoim db phpmyadmin.
Na przykład:
ALTER TABLE user ADD UNIQUE (email)
źródło
Jeśli chcesz również nazwać ograniczenie, użyj tego:
źródło
CREATE UNIQUE INDEX foo ON table_name (field_name)
Musisz usunąć zduplikowane wartości z tej kolumny przed wykonaniem tego sql. Każda istniejąca zduplikowana wartość w tej kolumnie doprowadzi do błędu mysql 1062
źródło
Najłatwiejszym i najszybszym sposobem byłoby użycie tabeli struktur phpmyadmin.
Tam jest w języku rosyjskim, ale w wersji angielskiej powinno być to samo. Wystarczy kliknąć przycisk Unikalny. Z tego miejsca możesz również ustawić kolumny jako PODSTAWOWE lub USUŃ.
źródło
to właściwa odpowiedź
część wkładana
źródło
Ten kod ma rozwiązać nasz problem polegający na ustawieniu unikalnego klucza dla istniejącej tabeli
źródło