PostgreSQL

PostgreSQL lisää konflikteja

PostgreSQL lisää konflikteja
Upsert-lauseke tunnistetaan sulautumisena RDBMS: ssä. 'Upsert' on hyödyllinen PostgreSQL: n kanssa, jos et halua käsitellä ainutlaatuisia rajoitusten rikkomisvirheitä toistuvien merkintöjen vuoksi. Kun suoritat yleisen UPDATE-komennon, tarvittavat muutokset tapahtuvat vain, jos tietue sopii komennostandardeihin; jos tällaisia ​​tietoja ei ole, mitään ei tapahdu. Kun lisäät uuden rivin taulukkoon, PostgreSQL päivittää rivin, jos se oli aiemmin olemassa, tai muuten se sisällyttää uuden rivin, jos riviä ei ollut. Upsert-SQL-avainsana yhdistää sanat "päivitä" ja "lisää".”Tässä artikkelissa kerrotaan, miten PostgreSQL” Upsert ”-ominaisuus toimii, sekä kuinka” Upsert ”-ominaisuutta käytetään lisäämään tai päivittämään tietoja, jos lisätty rivi on jo taulukossa.

Syntaksi

Seuraava on Upsert ON CONFLICT -kyselyn syntaksi.

>> INSERT INTO taulukon_nimi (sarake_lista) VALUSE (arvo_luettelo) ON ristiriitainen kohdetoiminto;

Käynnistä PostgreSQL-komentorivin kuori

Aloita käynnistämällä PostgreSQL-komentorivikuori Sovellus-valikosta. Yhdistä se tarvittavaan palvelimeen. Kirjoita tietokannan nimi, jota haluat käyttää. Jos haluat työskennellä toisessa portissa, kirjoita portin numero ja käyttäjänimi, jota haluat käyttää. Jatka oletusparametreja jättämällä välilyönnit sellaisenaan ja painamalla Enter-näppäintä jokaisessa vaihtoehdossa. Lisää salasana valitulle käyttäjänimelle, ja komentojonesi tulee olla käyttövalmis.

Esimerkki 1:

Nyt voimme aloittaa Upsertin kanssa ristiriidassa. Oletetaan, että valitussa tietokannassa on taulukko nimeltä "henkilö", jossa on joitain kenttiä, jotka näyttävät eri henkilöiden tietueita. Nämä muistiinpanot osoittavat ihmisten nimet, heidän ikänsä ja kaupunkinsa ja maat. Taulukko näkyy alla.

>> VALITSE * FROM henkilö;

On tärkeää tietää, miten virhe tai ristiriita voi syntyä. Taulukko "id", joka on myös ensisijainen avain, sisältää arvot 1-15. Kun käyttäjä yrittää lisätä taulukkoon kaksoiskappaleita, ristiriita ilmenee.

Kokeile seuraavaa INSERT-käskyä lisäämällä tietueet henkilö-taulukkoon. Tämä kysely aiheuttaa virheen, koska id-kentän arvo '3' on jo taulukossa.

>> LISÄÄ henkilö (tunnus, nimi, ikä, kaupunki, maa) ARVOT ('3', 'Habib', '45', 'Chakwal', 'Pakistan');

Esimerkki 2: Korjaa ON CONFLICT -lausekkeella

Käytämme ON CONFLICT -lauseketta välttämään INSERT-kyselyn, joka aiheuttaa tämän virheen kopioiden lisäämisen vuoksi. ON CONFLICT -komennossa on kaksi eri käyttötarkoitusta ilmaisua.

Esimerkki 3: Käännä ÄLÄ MITÄÄN lauseke

Tässä esimerkissä tarkastellaan ÄLÄ MITÄÄN lausetta. Tässä lausekkeessa täsmennetään, että mitään virhettä tai ristiriitaa ei suoriteta. Toisin sanoen tämä lause estää vain ristiriidat tai virheet.

Yritetään siis samaa INSERT-komentoa, jota käytimme aiemmin lisäämällä päällekkäisiä tietueita 'henkilö' -taulukkoon muutamalla muutoksella. Olemme lisänneet ON CONFLICT -lausekkeen yhdessä DO NOTHING -lausekkeen kanssa tähän lausekkeeseen. ON CONFLICT -lauseketta on sovellettu yksilölliseen id-sarakkeeseen. Tämä tarkoittaa, että kun käyttäjä yrittää lisätä kaksoisarvon id-sarakkeeseen, se välttää ristiriidan ja ei tee mitään. Kuten alla olevasta kuvasta näet, se ei edes lisää uutta tietuetta taulukkoon eikä päivitä edellistä tietuetta.

>> LISÄÄ henkilö (tunnus, nimi, ikä, kaupunki, maa) ARVOT ('3', 'Habib', '45', 'Chakwal', 'Pakistan') Ristiriitaisuuteen (id) EI tee mitään;

Tarkistetaan 'henkilö' -taulukko uudelleen aitouden vuoksi. Kuten alla olevasta kuvasta näet, taulukkoon ei ole tehty muutoksia.

>> VALITSE * FROM henkilö;

Esimerkki 2: Korjaa DO-lauseella

Seuraavaksi tarkastellaan ON CONFLICT- ja DO -lausekkeita. Kuten nimestään käy ilmi, lauseke ___ suorittaa virheen tai ristiriidan, kun kaksoisarvo lisätään taulukkoon. Käytämme samaa insert-komentoa, jota käytimme aiemmin lisäämällä kaksoiskappale tietueeseen 'henkilö' -taulukko, pienillä muutoksilla. Olemme lisänneet ON CONFLICT -lausekkeen, jonka sisällä on DO-lauseke. Kun käyttäjä yrittää lisätä ei-yksilöllisen arvon id-sarakkeeseen, se suorittaa toimenpiteen ristiriidan välttämiseksi. Olemme käyttäneet DOD-lausekkeen jälkeen UPDATE-lauseketta, joka osoittaa päivityksen henkilö-taulukon tietoihin. SET-avainsanaa käytetään määrittämään nimi-sarakkeen arvoksi uusi arvo, Habib, käyttämällä avainsanaa EXCLUDED, jossa 'id' on '3' kulloinkin. Jos suoritat seuraavan kyselyn, huomaat, että kysely on suoritettu.

>> LISÄÄ henkilö (tunnus, nimi, ikä, kaupunki, maa) ARVOT ('3', 'Habib', '45', 'Chakwal', 'Pakistan') Ristiriitaisuuteen (id) TEE PÄIVITÄ ASETUKSEN nimi = EI SULJETTU.nimi;

Henkilötaulukon tietueet on haettava, jotta näet yllä olevan kyselyn muutokset. Jos suoritat seuraavan kyselyn komentorivin kuoressa, sinun pitäisi nähdä seuraava tulos.

>> VALITSE * FROM henkilö;

Kuten alla olevasta lähdöstä näet, henkilön nimi on päivitetty nimeksi 'Habib', jossa 'id' on '3.'

Voit myös päivittää tietueet useammassa kuin yhdessä sarakkeessa käyttämällä INSERT-kyselyn ON CONFLICT -lausekkeen EXCLUDED-avainsanaa alla olevan kuvan mukaisesti.

>> LISÄÄ henkilö (tunnus, nimi, ikä, kaupunki, maa) ARVOT ('3', 'Habib', '45', 'Chakwal', 'Pakistan') Ristiriitaisuuteen (id) TEE PÄIVITÄ ASETUKSEN nimi = EI SULJETTU.nimi, kaupunki = SULJETTU.kaupunki;

Muutokset on esitetty alla.

>> VALITSE * FROM henkilö;

Johtopäätös

Tässä artikkelissa kerrotaan, miten PostgreSQL 'Upsert' -ohjelmaa käytetään ON CONFLICT -lausekkeen kanssa DO ja DO NOTHING -toimintojen kanssa. Tämän artikkelin lukemisen jälkeen toivomme, että sinun on helpompi ymmärtää, miten PostgreSQL 'Upsert -ohjelmaa käytetään.'

Kuinka näyttää OSD-peitto koko näytön Linux-sovelluksissa ja peleissä
Koko näytön pelien pelaaminen tai sovellusten käyttäminen häiriöttömässä koko näytön tilassa voi estää sinut paneelissa tai tehtäväpalkissa näkyvistä ...
Viisi parasta pelin kaappauskorttia
Olemme kaikki nähneet ja rakastaneet suoratoistopelejä YouTubessa. PewDiePie, Jakesepticye ja Markiplier ovat vain joitain huippupelaajista, jotka ova...
How to Develop a Game on Linux
A decade ago, not many Linux users would predict that their favorite operating system would one day be a popular gaming platform for commercial video ...