POSTGRESQL UNIK Begrensning

Sammendrag: I denne opplæringen lærer Du Om postgresql UNIQUE begrensning for å sikre at verdier lagret i en kolonne eller en gruppe kolonner er unike på tvers av rader i et bord.

noen ganger vil du sikre at verdier som er lagret i en kolonne eller en gruppe med kolonner, er unike over hele tabellen, for eksempel e-postadresser eller brukernavn.

PostgreSQL gir deg UNIQUE begrensningen som opprettholder unikt dataene riktig.

når en UNIQUE begrensning er på plass, hver gang du setter inn en ny rad, kontrollerer den om verdien allerede er i tabellen. Den avviser endringen og utsteder en feil hvis verdien allerede eksisterer. Den samme prosessen utføres for å oppdatere eksisterende data.

når Du legger til en UNIQUE begrensning i en kolonne eller en gruppe med kolonner, Oppretter PostgreSQL automatisk en unik indeks i kolonnen eller gruppen med kolonner.

PostgreSQL UNIK begrensning eksempel

følgende setning oppretter en ny tabell kalt person med en UNIQUE begrensning for kolonnen email.

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

Merk at UNIQUE begrensningen ovenfor kan skrives om som en tabellbegrensning som vist i følgende spørring:

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

sett først inn en ny rad i person – tabellen ved hjelp av INSERT – setningen:

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

for Det andre, sett inn en annen rad med duplikat e-post.

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

PostgreSQL utstedte en feilmelding.

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

Opprette EN UNIK begrensning på flere kolonner

PostgreSQL lar deg opprette en UNIQUE begrensning til en gruppe kolonner ved hjelp av følgende syntaks:

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

kombinasjonen av verdier i kolonne c2 og c3 vil være unik over hele tabellen. Verdien av kolonnen c2 eller c3 trenger ikke å være unik.

Legge til unik begrensning ved hjelp av en unik indeks

Noen ganger vil du kanskje legge til en unik begrensning i en eksisterende kolonne eller gruppe med kolonner. La oss ta en titt på følgende eksempel.

anta Først at du har en tabell som heter equipment:

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

for Det andre, opprett en unik indeks basert på kolonnen equip_id.

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

For Det Tredje legger du til en unik begrensning i tabellen equipment ved hjelp av indeksen equipment_equip_id.

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

Legg Merke til at ALTER TABLE – setningen får en eksklusiv lås på bordet. Hvis du har noen ventende transaksjoner, vil den vente på at alle transaksjoner skal fullføres før du skifter bordet. Derfor bør du sjekke tabellen pg_stat_activity for å se gjeldende ventende transaksjoner som pågår ved hjelp av følgende spørring:

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

Du bør se på resultatet for å finne kolonnen state med verdien idle in transaction. Det er transaksjonene som venter på å fullføre.

i denne opplæringen har du lært om UNIQUE begrensninger og hvordan du bruker dem til å håndheve verdier som er lagret i en kolonne eller en gruppe kolonner som er unike på tvers av rader i samme tabell.

  • Var denne opplæringen nyttig ?
  • YesNo



+