Ö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