Shrnutí: v tomto tutoriálu, se dozvíte o PostgreSQL UNIQUE
omezení ujistěte se, že hodnoty uložené v sloupec nebo skupina sloupců, které jsou jedinečné řádky v tabulce.
někdy chcete zajistit, aby hodnoty uložené ve sloupci nebo skupině sloupců byly jedinečné v celé tabulce, jako jsou e-mailové adresy nebo uživatelská jména.
PostgreSQL vám poskytuje omezení UNIQUE
, které správně udržuje jedinečnost dat.
když je zavedeno omezení UNIQUE
, pokaždé, když vložíte nový řádek, zkontroluje, zda je hodnota již v tabulce. Odmítne změnu a vydá chybu, pokud hodnota již existuje. Stejný proces se provádí pro aktualizaci stávajících dat.
když přidáte omezení UNIQUE
do sloupce nebo skupiny sloupců, PostgreSQL automaticky vytvoří jedinečný index ve sloupci nebo skupině sloupců.
PostgreSQL jedinečný příklad omezení
následující příkaz vytvoří novou tabulku s názvem person
s omezením UNIQUE
pro sloupec email
.
Code language: SQL (Structured Query Language) (sql)
Všimněte si, že UNIQUE
omezení výše může být přepsána jako tabulku omezení, jak je znázorněno v následující dotaz:
Code language: SQL (Structured Query Language) (sql)
za Prvé, vložit nový řádek do person
tabulky pomocí INSERT
prohlášení:
Code language: SQL (Structured Query Language) (sql)
za Druhé, vložit další řádek s duplicitním e-mailem.
Code language: SQL (Structured Query Language) (sql)
PostgreSQL vydal chybovou zprávu.
Code language: SQL (Structured Query Language) (sql)
vytvoření jedinečného omezení na více sloupcích
PostgreSQL umožňuje vytvořit omezení UNIQUE
pro skupinu sloupců pomocí následující syntaxe:
Code language: SQL (Structured Query Language) (sql)
kombinace hodnot ve sloupci c2 a c3 bude jedinečná v celé tabulce. Hodnota sloupce c2 nebo c3 nemusí být jedinečná.
přidání jedinečného omezení pomocí jedinečného indexu
někdy budete chtít přidat jedinečné omezení do existujícího sloupce nebo skupiny sloupců. Podívejme se na následující příklad.
nejprve předpokládejme, že máte tabulku s názvem equipment
:
Code language: SQL (Structured Query Language) (sql)
za druhé, vytvořte jedinečný index založený na sloupci equip_id
.
Code language: SQL (Structured Query Language) (sql)
za třetí přidejte jedinečné omezení do tabulky equipment
pomocí indexu equipment_equip_id
.
Code language: SQL (Structured Query Language) (sql)
Všimněte si, že příkaz ALTER TABLE
získá exkluzivní zámek na stole. Pokud máte nějaké nevyřízené transakce, bude čekat na dokončení všech transakcí před změnou tabulky. Proto byste měli zkontrolovat tabulku pg_stat_activity
a zobrazit aktuální probíhající transakce pomocí následujícího dotazu:
Code language: SQL (Structured Query Language) (sql)
měli byste se podívat na výsledek a najít sloupec state
s hodnotou idle in transaction
. Jedná se o transakce, které čekají na dokončení.
V tomto kurzu, jste se dozvěděli o UNIQUE
omezení a jak je použít k vynucení hodnoty uložené v sloupec nebo skupina sloupců jedinečné řádky v téže tabulce.
- byl tento návod užitečný ?
- YesNo