PostgreSQL egyedi kényszer

Összegzés: ebben az oktatóanyagban megtudhatja a PostgreSQL UNIQUE kényszert, hogy megbizonyosodjon arról, hogy az oszlopban vagy oszlopok csoportjában tárolt értékek egyediek-e a táblázat soraiban.

néha biztosítani szeretné, hogy az oszlopokban vagy oszlopcsoportokban tárolt értékek egyediek legyenek az egész táblában, például e-mail címek vagy felhasználónevek.

a PostgreSQL biztosítja az UNIQUE korlátozást, amely fenntartja az adatok egyediségét.

ha UNIQUE kényszer van érvényben, minden új sor beszúrásakor ellenőrzi, hogy az érték már szerepel-e a táblázatban. Elutasítja a módosítást, és hibát ad ki, ha az érték már létezik. Ugyanezt a folyamatot hajtják végre a meglévő adatok frissítésére.

ha UNIQUE korlátozást ad hozzá egy oszlophoz vagy oszlopcsoporthoz, a PostgreSQL automatikusan létrehoz egy egyedi indexet az oszlopon vagy oszlopcsoporton.

PostgreSQL egyedi kényszer példa

a következő utasítás egy új táblát hoz létre person néven, UNIQUE kényszerrel a email oszlophoz.

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

vegye figyelembe, hogy a fenti UNIQUE korlátozás átírható táblázatkorlátként, amint az a következő lekérdezésben látható:

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

először helyezzen be egy új sort a person táblába a INSERT utasítás használatával:

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

másodszor, helyezzen be egy másik sort duplikált e-mailekkel.

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

a PostgreSQL hibaüzenetet adott ki.

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

egyedi kényszer létrehozása több oszlopon

a PostgreSQL lehetővé teszi, hogy UNIQUE kényszert hozzon létre egy oszlopcsoportra a következő szintaxis használatával:

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

a c2 és c3 oszlopban szereplő értékek kombinációja az egész táblázatban egyedi lesz. A c2 vagy c3 oszlop értékének nem kell egyedinek lennie.

egyedi korlátozás hozzáadása egyedi index használatával

előfordulhat, hogy egyedi korlátozást szeretne hozzáadni egy meglévő oszlophoz vagy oszlopcsoporthoz. Vessünk egy pillantást a következő példára.

először tegyük fel, hogy van egy táblázata equipment:

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

másodszor hozzon létre egy egyedi indexet a equip_id oszlop alapján.

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

harmadszor, adjon hozzá egy egyedi korlátozást a equipment táblához a equipment_equip_id index segítségével.

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

figyeljük meg, hogy a ALTER TABLE nyilatkozatot szerez kizárólagos zár az asztalon. Ha bármilyen függőben lévő tranzakciója van, akkor a táblázat megváltoztatása előtt megvárja az összes tranzakció befejezését. Ezért ellenőrizze a pg_stat_activity táblázatot, hogy megnézze az aktuális folyamatban lévő tranzakciókat a következő lekérdezéssel:

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

nézze meg az eredményt, hogy megtalálja a state oszlopot, amelynek értéke idle in transaction. Ezek azok a tranzakciók, amelyek befejezésre várnak.

ebben az oktatóanyagban megismerheti az UNIQUE megszorításokat, és azt, hogy hogyan használhatja őket egy oszlopban vagy oszlopok csoportjában tárolt értékek érvényesítésére ugyanazon táblázat sorai között.

  • hasznos volt ez az oktatóanyag ?
  • igennem



+