Podsumowanie: w tym samouczku dowiesz się o ograniczeniu PostgreSQL UNIQUE
, aby upewnić się, że wartości przechowywane w kolumnie lub grupie kolumn są unikalne w wierszach w tabeli.
czasami chcesz mieć pewność, że wartości zapisane w kolumnie lub grupie kolumn są unikalne w całej tabeli, takie jak adresy e-mail lub nazwy użytkowników.
PostgreSQL zapewnia ograniczenie UNIQUE
, które poprawnie zachowuje unikalność danych.
gdy istnieje ograniczenie UNIQUE
, za każdym razem, gdy wstawiasz nowy wiersz, sprawdza on, czy wartość jest już w tabeli. Odrzuca zmianę i wyświetla błąd, jeśli wartość już istnieje. Ten sam proces jest przeprowadzany w celu aktualizacji istniejących danych.
po dodaniu ograniczenia UNIQUE
do kolumny lub grupy kolumn, PostgreSQL automatycznie utworzy unikalny indeks na kolumnie lub grupie kolumn.
przykład unikalnego ograniczenia PostgreSQL
poniższe polecenie tworzy nową tabelę o nazwie person
z ograniczeniem UNIQUE
dla kolumny email
.
Code language: SQL (Structured Query Language) (sql)
zauważ, że powyższe ograniczenie UNIQUE
można przepisać jako ograniczenie tabeli, jak pokazano w poniższym zapytaniu:
Code language: SQL (Structured Query Language) (sql)
najpierw wstaw nowy wiersz do tabeli person
za pomocą polecenia INSERT
:
Code language: SQL (Structured Query Language) (sql)
po drugie, Wstaw kolejny wiersz z duplikatem wiadomości e-mail.
Code language: SQL (Structured Query Language) (sql)
PostgreSQL wydał komunikat o błędzie.
Code language: SQL (Structured Query Language) (sql)
tworzenie unikalnego ograniczenia na wielu kolumnach
PostgreSQL pozwala na utworzenie ograniczenia UNIQUE
do grupy kolumn przy użyciu następującej składni:
Code language: SQL (Structured Query Language) (sql)
kombinacja wartości w kolumnie c2 i c3 będzie unikalna dla całej tabeli. Wartość kolumny c2 lub C3 nie musi być unikalna.
dodawanie unikalnego ograniczenia przy użyciu unikalnego indeksu
czasami możesz dodać unikalne ograniczenie do istniejącej kolumny lub grupy kolumn. Spójrzmy na poniższy przykład.
najpierw Załóżmy, że masz tabelę o nazwie equipment
:
Code language: SQL (Structured Query Language) (sql)
po drugie, Utwórz unikalny indeks na podstawie kolumny equip_id
.
Code language: SQL (Structured Query Language) (sql)
Po Trzecie, dodaj unikalne ograniczenie do tabeli equipment
za pomocą indeksu equipment_equip_id
.
Code language: SQL (Structured Query Language) (sql)
zauważ, że oświadczenie ALTER TABLE
uzyskuje wyłączną blokadę na stole. Jeśli masz jakieś oczekujące transakcje, będzie czekać na zakończenie wszystkich transakcji przed zmianą tabeli. Dlatego powinieneś sprawdzić tabelę pg_stat_activity
, aby zobaczyć bieżące oczekujące transakcje, które są w toku, używając następującego zapytania:
Code language: SQL (Structured Query Language) (sql)
powinieneś spojrzeć na wynik, aby znaleźć kolumnę state
o wartości idle in transaction
. Są to transakcje, które oczekują na zakończenie.
w tym samouczku nauczyłeś się o ograniczeniach UNIQUE
i jak ich używać do wymuszania wartości przechowywanych w kolumnie lub grupie kolumn unikalnych w wierszach w tej samej tabeli.
- czy ten samouczek był pomocny ?
- YesNo