PostgreSQL

PostgreSQL lisab konflikti

PostgreSQL lisab konflikti
Väljend 'Upsert' on RDBMS-is tunnustatud ühendamisena. Upsert on kasulik PostgreSQL-iga, kui te ei soovi korduvate sisestuste tõttu tegeleda ainulaadsete piirangurikkumise vigadega. Üldise käsu UPDATE käivitamisel toimuvad vajalikud kohandused ainult siis, kui kirje sobib käsustandarditega; kui selliseid andmeid pole, siis ei juhtu midagi. Kui lisate tabelisse uue rea, värskendab PostgreSQL rida, kui see oli varem olemas, või lisab see uue rea, kui rida ei olnud. SQL-i märksõna „Upsert” ühendab sõnu „update” ja „insert”."See artikkel näitab teile, kuidas töötab funktsioon PostgreSQL 'Upsert', samuti funktsiooni 'Upsert' abil teabe lisamiseks või värskendamiseks, kui sisestatud rida on tabelis juba olemas.

Süntaks

Järgmine on päringu 'Upsert ON CONFLICT' süntaks.

>> INSERT INTO tabeli_nimi (veeru_loend) VALUSE (väärtus_loend) VASTUVÕTU sihttoimingule;

Käivitage PostgreSQL käsurea kest

Alustuseks käivitage menüü Rakendus rakenduse PostgreSQL käsurea kest. Ühendage see vajaliku serveriga. Sisestage andmebaasi nimi, millega soovite töötada. Teises pordis töötamiseks tippige pordi number ja kasutajanimi, millega soovite töötada. Vaikeparameetritega jätkamiseks jätke tühikud nii, nagu need on, ja vajutage iga võimaluse juures sisestusklahvi. Lisage valitud kasutajanimele parool ja teie käsk-shell peaks olema kasutamiseks valmis.

Näide 1:

Nüüd võime alustada konflikti tekitanud 'Upsert'. Oletame, et teil on valitud andmebaasis tabel pealkirjaga "inimene", millel on mõned väljad, mis näitavad erinevate isikute kirjeid. Need andmed näitavad inimeste nimesid, nende vanust ning linnu ja riike. Tabel kuvatakse allpool.

>> VALI * INIMESELT;

Oluline on teada, kuidas võib tekkida viga või konflikt. Tabeli väli id, mis on ka esmane võti, sisaldab väärtusi vahemikus 1 kuni 15. Kui kasutaja proovib tabelisse lisada duplikaatkirjeid, tekib konflikt.

Proovime järgmist INSERT-lauset, sisestades kirjed tabelisse „inimene”. See päring põhjustab vea, kuna välja „id” väärtus „3” on tabelis juba olemas.

>> INSERT INTO (isik, nimi, vanus, linn, riik) VÄÄRTUSED ('3', 'Habib', '45', 'Chakwal', 'Pakistan');

Näide 2: asendage olekuga ON CONFLICT

Kasutame klauslit ON CONFLICT, et vältida duplikaadikirjete sisestamise tõttu seda tõrke põhjustavat päringut INSERT. Käsuga ON KONFLIKT tuleb välja kaks erineva kasutusega fraasi.

Näide 3: asendage lause ÄRA MIDAGI

Selles näites vaatleme klauslit ÄRA MIDAGI. Selles klauslis täpsustatakse, et vigade või konfliktide korral toiminguid ei tehta. Teisisõnu väldib see klausel ainult konflikte või vigu.

Nii et proovime sama käsku INSERT, mida varem kasutasime tabelisse "inimene" duplikaatide lisamiseks, lisades mõned muudatused. Oleme lisanud klausli ON CONFLICT koos lausega ÄRA MIDAGI. Unikaalsele veerule id on rakendatud klausel ON CONFLICT. See tähendab, et kui kasutaja proovib sisestada veergu „ID” duplikaadi, väldib see konflikti ja ei tee midagi. Nagu näete alloleval pildil, ei sisesta see isegi uut kirjet tabelisse ega uuenda eelmist kirjet.

>> INSERT INTO (ID, nimi, vanus, linn, riik) VÄÄRTUSED ('3', 'Habib', '45', 'Chakwal', 'Pakistan') VASTU (id) EI TEHA MIDAGI;

Kontrollime autentsuse huvides uuesti tabelit „inimene”. Nagu näete alloleval pildil, pole tabelis muudatusi tehtud.

>> VALI * INIMESELT;

Näide 2: asendage DO klausliga

Järgmisena vaatame klausleid ON CONFLICT ja DO. Nagu selle nimi osutab, täidab ___ klausel vea või konflikti korral toimingu, kui tabelisse lisatakse duplikaatväärtus. Kasutame sama käsku, mida varem kasutasime tabelisse "inimene" duplikaadi sisestamiseks väikeste muudatustega. Oleme lisanud ON CONFLICT-klausli, mille sees on DO-klausel. Kui kasutaja üritab veergu „ID” lisada unikaalse väärtuse, teeb ta konflikti vältimiseks toimingu. Oleme kasutanud klahvi UPDATE pärast DO-klauslit, mis näitab tabeli 'isik' andmete värskendamist. Märksõna SET kasutatakse veeru „nimi” väärtuse määramiseks uueks väärtuseks „Habib”, kasutades märksõna EXCLUDED, kus 'id' on praegusel ajal '3'. Kui täidate järgmise päringu, näete, et päring on täidetud.

>> INSERT INTO (ID, nimi, vanus, linn, riik) VÄÄRTUSED ('3', 'Habib', '45', 'Chakwal', 'Pakistan') VASTUVÕTTEL (id) DO UPDATE SET name = EXCLUDED.nimi;

Tabeli 'inimene' kirjed tuleb tuua, et näha ülaltoodud päringu muudatusi. Kui täidate järgmise päringu käsurea kestas, peaksite nägema järgmist väljundit.

>> VALI * INIMESELT;

Nagu näete allpool olevast väljundist, on inimese nimi muudetud nimeks „Habib”, kus „id” on „3”."

Samuti saate kirjeid värskendada rohkem kui ühes veerus, kasutades päringu INSERT klauslis ON CONFLICT olevat märksõna EXCLUDED, nagu allpool näidatud.

>> INSERT INTO (ID, nimi, vanus, linn, riik) VÄÄRTUSED ('3', 'Habib', '45', 'Chakwal', 'Pakistan') VASTUVÕTTEL (id) DO UPDATE SET name = EXCLUDED.nimi, linn = VÄLISTATUD.linn;

Muudatused on toodud allpool.

>> VALI * INIMESELT;

Järeldus

See artikkel näitas teile, kuidas kasutada PostgreSQL-i 'Upsert' klausliga ON CONFLICT koos toimingutega DO and NOT NOTHING. Pärast selle artikli lugemist loodame, et teil on lihtsam mõista, kuidas PostgreSQL 'Upsertit kasutada."

Kommertsmängumootorite avatud lähtekoodiga sadamad
Tasuta, avatud lähtekoodiga ja platvormidevaheliste mängumootorite puhkusereise saab kasutada nii vanade kui ka mõnede üsna hiljutiste mängude pealkir...
Parimad Linuxi käsurea mängud
Käsurida pole Linuxi kasutamisel lihtsalt teie suurim liitlane - see võib olla ka meelelahutusallikas, sest saate seda kasutada paljude lõbusate mängu...
Parimad Linuxi mängupuldi kaardistamise rakendused
Kui teile meeldib mängida Linuxis mänge tavalise klaviatuuri ja hiire sisestussüsteemi asemel mängupuldiga, on teie jaoks mõned kasulikud rakendused. ...