PostgreSQL JEDINEČNÉ Omezení

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



+