Unik begrænsning

Resume: i denne vejledning lærer du om begrænsning UNIQUE for at sikre, at værdier, der er gemt i en kolonne eller en gruppe af kolonner, er unikke på tværs af rækker i en tabel.

nogle gange vil du sikre dig, at værdier, der er gemt i en kolonne eller en gruppe af kolonner, er unikke på tværs af hele tabellen, f.eks. mailadresser eller brugernavne.

postgraduate giver dig den UNIQUE begrænsning, der opretholder de unikke data korrekt.

når en UNIQUE begrænsning er på plads, kontrollerer den, hver gang du indsætter en ny række, om værdien allerede er i tabellen. Det afviser ændringen og udsteder en fejl, hvis værdien allerede eksisterer. Den samme proces udføres til opdatering af eksisterende data.

når du tilføjer en UNIQUE – begrænsning til en kolonne eller en gruppe af kolonner, opretter Postgraduate automatisk et unikt indeks i kolonnen eller gruppen af kolonner.

unik begrænsningseksempel

følgende sætning opretter en ny tabel med navnet person med en UNIQUE begrænsning for kolonnen email.

Code language: SQL (Structured Query Language) (sql)

Bemærk, at UNIQUE – begrænsningen ovenfor kan omskrives som en tabelbegrænsning som vist i følgende forespørgsel:

Code language: SQL (Structured Query Language) (sql)

indsæt først en ny række i person tabellen ved hjælp af INSERT sætningen:

Code language: SQL (Structured Query Language) (sql)

for det andet skal du indsætte en anden række med duplikat e-mail.

Code language: SQL (Structured Query Language) (sql)

send en fejlmeddelelse.

Code language: SQL (Structured Query Language) (sql)

oprettelse af en unik begrænsning på flere kolonner

postgraduate giver dig mulighed for at oprette en UNIQUE begrænsning til en gruppe kolonner ved hjælp af følgende syntaks:

Code language: SQL (Structured Query Language) (sql)

kombinationen af værdier i kolonne c2 og c3 vil være unik på tværs af hele tabellen. Værdien af kolonnen c2 eller c3 behøver ikke at være unik.

tilføjelse af entydig begrænsning ved hjælp af et entydigt indeks

nogle gange kan du tilføje en entydig begrænsning til en eksisterende kolonne eller gruppe af kolonner. Lad os se på følgende eksempel.

Antag først, at du har en tabel med navnet equipment:

Code language: SQL (Structured Query Language) (sql)

for det andet skal du oprette et unikt indeks baseret på kolonnen equip_id.

Code language: SQL (Structured Query Language) (sql)

for det tredje skal du tilføje en unik begrænsning til tabellen equipment ved hjælp af indekset equipment_equip_id.

Code language: SQL (Structured Query Language) (sql)

Bemærk, at ALTER TABLE erklæringen erhverver en eksklusiv lås på bordet. Hvis du har ventende transaktioner, venter det på, at alle transaktioner er afsluttet, før du ændrer tabellen. Derfor bør du kontrollere tabellen pg_stat_activity for at se de aktuelle ventende transaktioner, der er i gang ved hjælp af følgende forespørgsel:

Code language: SQL (Structured Query Language) (sql)

du skal se på resultatet for at finde kolonnen state med værdien idle in transaction. Det er de transaktioner, der afventer at gennemføre.

i denne vejledning har du lært om UNIQUE begrænsninger, og hvordan du bruger dem til at håndhæve værdier, der er gemt i en kolonne eller en gruppe kolonner, der er unikke på tværs af rækker i samme tabel.

  • var denne tutorial nyttig ?
  • Ja



+