PostgreSQL

PostgreSQL Upsert on Conflict

PostgreSQL Upsert on Conflict
Izraz 'Upsert' je v RDBMS prepoznan kot združitev. 'Upsert' je koristno imeti pri PostgreSQL, če se zaradi ponavljajočih se vnosov ne želite spoprijeti z edinstvenimi napakami zaradi kršitve omejitev. Ko zaženete splošni ukaz UPDATE, bodo potrebne prilagoditve izvedene le, če zapis ustreza standardom ukazov; če taki podatki ne obstajajo, se nič ne zgodi. Ko dodate novo vrstico v tabelo, bo PostgreSQL posodobil vrstico, če je obstajala prej, ali pa bo vključil novo vrstico, če vrstica ni obstajala. Ključna beseda SQL Upsert združuje besedi »posodobitev« in »vstavljanje«.”Ta članek prikazuje, kako deluje funkcija PostgreSQL 'Upsert', pa tudi, kako uporabiti funkcijo 'Upsert' za dodajanje ali posodabljanje informacij, če vstavljena vrstica že obstaja v tabeli.

Sintaksa

Sledi sintaksa poizvedbe 'Upsert' ON CONFLICT.

>> INSERT INTO ime_tabele (stolpec_list) VALUSE (seznam_vrednosti) ON CONFLICT ciljno dejanje;

Zaženite lupino ukazne vrstice PostgreSQL

Za začetek v meniju Aplikacije zaženite lupino ukazne vrstice PostgreSQL. Povežite ga z zahtevanim strežnikom. Vnesite ime baze podatkov, s katero želite delati. Če želite delati na drugih vratih, vnesite številko vrat in uporabniško ime, s katerim želite delati. Če želite nadaljevati s privzetimi parametri, pustite presledke takšne, kot so, in pri vsaki možnosti pritisnite 'Enter'. Dodajte geslo za izbrano uporabniško ime in vaša ukazna lupina mora biti pripravljena za uporabo.

Primer 1:

Zdaj lahko začnemo z navzkrižjem 'Upsert'. Recimo, da imate v izbrani bazi podatkov tabelo z naslovom "oseba" z nekaterimi polji, ki prikazujejo zapise različnih oseb. Ti zapisi prikazujejo imena ljudi, njihove starosti ter njihova mesta in države. Tabela je prikazana spodaj.

>> IZBERI * OD osebe;

Pomembno je vedeti, kako lahko pride do napake ali konflikta. Polje tabele 'id', ki je hkrati tudi primarni ključ, vsebuje vrednosti od 1 do 15. Ko uporabnik poskuša v tabelo vstaviti nekaj podvojenih zapisov, pride do konflikta.

Poskusimo z naslednjo izjavo INSERT in vstavimo zapise v tabelo 'oseba'. Ta poizvedba bo povzročila napako, ker vrednost '3' polja 'id' že obstaja v tabeli.

>> VSTAVITE V OSOBO (ID, ime, starost, mesto, država) VREDNOSTI ('3', 'Habib', '45', 'Chakwal', 'Pakistan');

Primer 2: Podstavite s klavzulo ON CONFLICT

S stavkom ON CONFLICT se bomo izognili poizvedbi INSERT, ki povzroča to napako zaradi vstavljanja podvojenih zapisov. Ukaz ON CONFLICT ima dva stavka z različnimi načini uporabe.

3. primer: podstavite s klavzulo DO NIČ

V tem primeru si bomo ogledali klavzulo DO NIČ. Ta klavzula pojasnjuje, da nobena operacija ne bo izvedena ob napaki ali konfliktu. Z drugimi besedami, ta klavzula se bo izognila le konfliktom ali napakam.

Torej, poskusimo z istim ukazom INSERT, ki smo ga prej uporabili za dodajanje podvojenih zapisov v tabelo 'oseba', z nekaj priloženimi spremembami. Dodali smo stavek ON CONFLICT, skupaj s stavkom DO NOTHING v tem stavku. Klavzula ON CONFLICT je bila uporabljena za enolični stolpec 'id'. To pomeni, da se bo uporabnik, ko bo poskušal podvojeno vrednost vstaviti v stolpec 'id', izognil konfliktu in ne bo naredil ničesar. Kot lahko vidite na spodnji sliki, novega zapisa niti ne bo vstavil v tabelo niti posodobil prejšnjega zapisa.

>> VKLJUČITE V OSOBO (id, ime, starost, mesto, država) VREDNOSTI ('3', 'Habib', '45', 'Chakwal', 'Pakistan') O KONFLIKTU (id) NIČ NIČ;

Zaradi verodostojnosti ponovno preverimo tabelo 'oseba'. Kot lahko vidite na spodnji sliki, tabela ni bila spremenjena.

>> IZBERI * OD osebe;

Primer 2: Zgornja klavzula DO

Nato si bomo ogledali klavzuli ON CONFLICT in DO. Kot že ime pove, bo stavek ___ izvedel dejanje ob napaki ali konfliktu, ko bo v tabelo vstavljena podvojena vrednost. Uporabili bomo isti ukaz za vstavljanje, kot smo ga prej uporabili za vstavljanje podvojenega zapisa v tabelo 'oseba', z manjšo spremembo. Dodali smo stavek ON CONFLICT s klavzulo DO znotraj njega. Ko uporabnik poskuša v stolpec 'id' vstaviti neenotno vrednost, bo izvedel dejanje, da se izogne ​​konfliktu. Za stavkom DO uporabljamo stavek UPDATE, ki označuje posodobitev podatkov v tabeli 'oseba'. Ključna beseda SET se uporablja za nastavitev vrednosti stolpca »ime« na novo vrednost, »Habib«, z uporabo ključne besede IZKLJUČENO, kjer je trenutno »id« 3 ». Če izvedete naslednjo poizvedbo, boste videli, da je bila poizvedba izvedena.

>> VSTAVITE V OSOBO (id, ime, starost, mesto, država) VREDNOTE ('3', 'Habib', '45', 'Chakwal', 'Pakistan') O KONFLIKTU (id) UPORABI NASTAVITEV NAST.ime;

Za ogled sprememb v zgornji poizvedbi je treba pridobiti zapise tabele 'oseba'. Če v lupini ukazne vrstice izvedete naslednjo poizvedbo, bi morali videti naslednji izhod.

>> IZBERI * OD osebe;

Kot lahko vidite iz spodnjega izhoda, je bilo ime osebe posodobljeno na "Habib", kjer je "id" 3."

Zapise lahko posodobite tudi v več kot enem stolpcu z uporabo ključne besede EXCLUDED v stavku ON CONFLICT poizvedbe INSERT, kot je prikazano spodaj.

>> VSTAVITE V OSOBO (id, ime, starost, mesto, država) VREDNOSTI ('3', 'Habib', '45', 'Chakwal', 'Pakistan') V KONFLIKTU (id) UPORABI NASTAVITEV NASTAVITEV = IZKLJUČENO.ime, mesto = IZKLJUČENO.mesto;

Spremembe so prikazane spodaj.

>> IZBERI * OD osebe;

Zaključek

Ta članek vam je pokazal, kako uporabljati PostgreSQL 'Upsert' s klavzulo ON CONFLICT, skupaj z dejanji DO in DO NOTHING. Po branju tega članka upamo, da boste lažje razumeli, kako uporabljati PostgreSQL 'Upsert."

Kako uporabiti Xdotool za spodbujanje klikov in pritiskov mišk v Linuxu
Xdotool je brezplačno in odprtokodno orodje za ukazno vrstico, ki simulira klike in pritiske tipk. Ta članek bo zajemal kratek vodnik o uporabi xdotoo...
Najboljših 5 izdelkov z ergonomsko računalniško miško za Linux
Ali dolgotrajna uporaba računalnika povzroča bolečine v zapestju ali prstih? Ali imate trde sklepe in bi se morali neprestano tresti z rokami? Ali čut...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...