sammanfattning: i den här handledningen lär du dig om PostgreSQL UNIQUE
begränsning för att se till att värden som lagras i en kolumn eller en grupp kolumner är unika över rader i en tabell.
ibland vill du se till att värden som lagras i en kolumn eller en grupp kolumner är unika i hela tabellen, till exempel e-postadresser eller användarnamn.
PostgreSQL ger dig UNIQUE
– begränsningen som upprätthåller dataens unika egenskaper korrekt.
när en UNIQUE
– begränsning är på plats kontrollerar den om värdet redan finns i tabellen varje gång du infogar en ny rad. Den avvisar ändringen och utfärdar ett fel om värdet redan finns. Samma process utförs för att uppdatera befintliga data.
när du lägger till en UNIQUE
– begränsning i en kolumn eller en grupp kolumner skapar PostgreSQL automatiskt ett unikt index i kolumnen eller gruppen kolumner.
PostgreSQL unikt begränsningsexempel
följande uttalande skapar en ny tabell med namnet person
Med en UNIQUE
begränsning för kolumnen email
.
Code language: SQL (Structured Query Language) (sql)
Observera att UNIQUE
– begränsningen ovan kan skrivas om som en tabellbegränsning som visas i följande fråga:
Code language: SQL (Structured Query Language) (sql)
sätt först in en ny rad i person
– tabellen med INSERT
– satsen:
Code language: SQL (Structured Query Language) (sql)
för det andra, sätt in en annan rad med duplicerat e-postmeddelande.
Code language: SQL (Structured Query Language) (sql)
PostgreSQL utfärdade ett felmeddelande.
Code language: SQL (Structured Query Language) (sql)
skapa en unik begränsning på flera kolumner
PostgreSQL låter dig skapa en UNIQUE
begränsning till en grupp kolumner med följande syntax:
Code language: SQL (Structured Query Language) (sql)
kombinationen av värden i kolumn c2 och c3 kommer att vara unik över hela tabellen. Värdet på kolumnen c2 eller c3 behöver inte vara unikt.
lägga till unik begränsning med ett unikt index
ibland kan du lägga till en unik begränsning i en befintlig kolumn eller grupp av kolumner. Låt oss ta en titt på följande exempel.
Antag först att du har en tabell som heter equipment
:
Code language: SQL (Structured Query Language) (sql)
för det andra, skapa ett unikt index baserat på kolumnen equip_id
.
Code language: SQL (Structured Query Language) (sql)
för det tredje, lägg till en unik begränsning i tabellen equipment
med index equipment_equip_id
.
Code language: SQL (Structured Query Language) (sql)
Lägg märke till att ALTER TABLE
– uttalandet förvärvar ett exklusivt lås på bordet. Om du har några väntande transaktioner väntar det på att alla transaktioner ska slutföras innan du ändrar tabellen. Därför bör du kontrollera tabellen pg_stat_activity
för att se de pågående pågående transaktionerna med följande fråga:
Code language: SQL (Structured Query Language) (sql)
du bör titta på resultatet för att hitta kolumnen state
med värdet idle in transaction
. Det är de transaktioner som väntar på att slutföra.
i den här handledningen har du lärt dig om UNIQUE
begränsningar och hur du använder dem för att genomdriva värden som lagras i en kolumn eller en grupp kolumner som är unika över rader i samma tabell.
- var denna handledning till hjälp ?
- Janej