Summary: tässä opetusohjelmassa opit PostgreSQL UNIQUE
constraint varmistamaan, että sarakkeeseen tai sarakeryhmään tallennetut arvot ovat yksilöllisiä taulukon riveillä.
joskus haluat varmistaa, että sarakkeeseen tai sarakeryhmään tallennetut arvot ovat ainutlaatuisia koko taulukossa, kuten sähköpostiosoitteet tai käyttäjätunnukset.
PostgreSQL tarjoaa UNIQUE
rajoituksen, joka ylläpitää datan ainutlaatuisuutta oikein.
kun UNIQUE
rajoitus on käytössä, joka kerta kun lisäät uuden rivin, se tarkistaa, onko arvo jo taulukossa. Se hylkää muutoksen ja antaa virheen, jos arvo on jo olemassa. Sama prosessi tehdään olemassa olevan tiedon päivittämiseksi.
kun lisäät UNIQUE
rajoituksen sarakkeeseen tai sarakeryhmään, PostgreSQL luo automaattisesti ainutlaatuisen indeksin sarakkeeseen tai sarakeryhmään.
PostgreSQL UNIQUE constraint esimerkki
seuraava lausunto luo uuden taulukon nimeltä person
, jossa on UNIQUE
rajoitus email
sarakkeelle.
Code language: SQL (Structured Query Language) (sql)
huomaa, että yllä oleva UNIQUE
rajoitus voidaan kirjoittaa uudelleen taulukkorajoituksena, kuten seuraavasta kyselystä käy ilmi:
Code language: SQL (Structured Query Language) (sql)
lisätään ensin uusi rivi person
taulukkoon käyttäen INSERT
lauseketta:
Code language: SQL (Structured Query Language) (sql)
toiseksi, lisää toinen rivi päällekkäistä sähköpostia.
Code language: SQL (Structured Query Language) (sql)
PostgreSQL antoi virheilmoituksen.
Code language: SQL (Structured Query Language) (sql)
ainutlaatuisen rajoituksen luominen useille sarakkeille
PostgreSQL mahdollistaa UNIQUE
rajoituksen luomisen sarakeryhmälle käyttämällä seuraavaa syntaksia:
Code language: SQL (Structured Query Language) (sql)
sarakkeen C2 ja c3 arvojen yhdistelmä on yksilöllinen koko taulukossa. Sarakkeen C2 tai c3 arvon ei tarvitse olla yksilöllinen.
lisäämällä yksilöllinen rajoite käyttäen yksilöllistä indeksiä
, saatat joskus haluta lisätä ainutlaatuisen rajoituksen olemassa olevaan sarakkeeseen tai sarakeryhmään. Katsotaanpa katsomaan seuraava esimerkki.
ensin oletetaan, että sinulla on taulu nimeltä equipment
:
Code language: SQL (Structured Query Language) (sql)
toiseksi luodaan yksilöllinen hakemisto, joka perustuu sarakkeeseen equip_id
.
Code language: SQL (Structured Query Language) (sql)
kolmanneksi, lisätään equipment
taulukkoon yksilöllinen rajoite käyttäen equipment_equip_id
– indeksiä.
Code language: SQL (Structured Query Language) (sql)
huomaa, että ALTER TABLE
lausuma saa yksinoikeuden pöytään. Jos sinulla on vireillä olevia tapahtumia, se odottaa kaikkien tapahtumien valmistumista ennen taulukon muuttamista. Tarkista siis pg_stat_activity
-taulukko nähdäksesi käynnissä olevat käynnissä olevat tapahtumat seuraavan kyselyn avulla.:
Code language: SQL (Structured Query Language) (sql)
tulosta kannattaa katsoa, jotta löytyy state
sarake, jonka arvo on idle in transaction
. Ne ovat liiketoimia, jotka ovat kesken.
tässä opetusohjelmassa olet oppinut UNIQUE
rajoitteista ja siitä, miten niitä voidaan käyttää sarakkeeseen tai sarakeryhmään tallennettujen arvojen vahvistamiseen saman taulukon riveillä.
- oliko tästä opetuksesta apua ?
- YesNo