Ö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