PostgreSQL

PostgreSQL frissítse a konfliktust

PostgreSQL frissítse a konfliktust
Az 'Upsert' kifejezést egyesítésként ismeri fel az RDBMS. Az „Upsert” akkor hasznos, ha rendelkezik a PostgreSQL-lel, ha nem akar egyedi korlátozási hibákkal foglalkozni az ismételt bejegyzések miatt. Egy általános UPDATE parancs futtatásakor a szükséges módosítások csak akkor történnek, ha egy rekord megfelel a parancs szabványainak; ha nincs ilyen adat, akkor semmi sem történik. Ha új sort ad hozzá egy táblához, a PostgreSQL frissíti a sort, ha az korábban létezett, vagy pedig beépíti az új sort, ha a sor nem létezett. Az 'Upsert' SQL kulcsszó egyesíti a „frissítés” és a „beszúrás” szavakat.”Ez a cikk bemutatja, hogyan működik a PostgreSQL 'Upsert' funkciója, valamint hogyan lehet használni a 'Upsert' funkciót információk hozzáadásához vagy frissítéséhez, ha a beszúrt sor már létezik a táblázatban.

Szintaxis

A következő az 'Upsert ON CONFLICT' lekérdezés szintaxisa.

>> INSERT INTO tábla_neve (oszlop_lista) VALUSE (érték_lista) BE KONFLIKTUS célművelet;

Indítsa el a PostgreSQL parancssori héjat

Először indítsa el a PostgreSQL parancssori héjat az Alkalmazás menüből. Csatlakoztassa a szükséges szerverhez. Írja be az adatbázis nevét, amelyen dolgozni szeretne. Ha másik porton szeretne dolgozni, írja be a portszámot és a felhasználónévet, amellyel dolgozni szeretne. Az alapértelmezett paraméterek folytatásához hagyja a szóközöket a jelenlegi állapotban, és minden lehetőségnél nyomja meg az „Enter” gombot. Adjon meg jelszót a kiválasztott felhasználónévhez, és a parancssorának készen kell állnia a használatra.

1. példa:

Most elkezdhetjük az „Upsert” -t konfliktusban. Tegyük fel, hogy van egy kiválasztott adatbázisban egy "személy" nevű tábla, amely néhány mezővel különböző személyek rekordjait mutatja. Ezek a feljegyzések mutatják az emberek nevét, életkorát, városait és országait. A táblázat alább látható.

>> SELECT * FROM személy;

Fontos tudni, hogy hogyan keletkezhet hiba vagy konfliktus. Az 'id' tábla mező, amely szintén elsődleges kulcs, 1 és 15 közötti értékeket tartalmaz. Amikor a felhasználó megpróbál beilleszteni néhány duplikált rekordot a táblába, akkor az ütközés bekövetkezik.

Próbáljuk meg a következő INSERT utasítást, beszúrva a rekordokat a 'személy' táblába. Ez a lekérdezés hibát okoz, mert az „id” mező „3” értéke már létezik a táblázatban.

>> INSERT INTO személy (azonosító, név, életkor, város, ország) ÉRTÉKEK ('3', 'Habib', '45', 'Chakwal', 'Pakisztán');

2. példa: Helyezze be az ON CONFLICT záradékkal

Az ON CONFLICT záradékot használjuk az INSERT lekérdezés elkerülésére, amely ezt a hibát okozza az ismétlődő rekordok beszúrása miatt. Az ON CONFLICT parancs két, különböző felhasználású frázissal áll elő.

3. példa: Helyezze fel a DO NOTHING záradékot

Ebben a példában a DO NOTHING záradékot vesszük szemügyre. Ez a záradék részletezi, hogy hiba vagy konfliktus esetén semmilyen műveletet nem hajtanak végre. Más szavakkal, ez a záradék csak elkerüli az ütközéseket vagy hibákat.

Próbáljuk meg ugyanazt az INSERT parancsot, amelyet korábban használtunk duplikált rekordok hozzáadásához a "személy" táblához, néhány változtatással kiegészítve. Hozzáadtuk az ON CONFLICT záradékot, a DO NOTHING kijelentéssel együtt. Az ON CONFLICT záradékot alkalmaztuk az egyedi 'id' oszlopra. Ez azt jelenti, hogy amikor a felhasználó megpróbálja beilleszteni az ismétlődő értéket az „id” oszlopba, elkerüli a konfliktust és nem tesz semmit. Amint az alábbi képen látható, nem is illeszti be az új rekordot a táblázatba, és nem is frissíti az előző rekordot.

>> INSERT INTO személy (azonosító, név, életkor, város, ország) ÉRTÉKEK ('3', 'Habib', '45', 'Chakwal', 'Pakisztán') A KONFLIKTUSOKON (id) SEMMI;

Ellenőrizzük még egyszer a „személy” táblázatot a hitelesség kedvéért. Amint az alábbi képen látható, a táblázatban nem történt változás.

>> SELECT * FROM személy;

2. példa: Utasítás DO záradékkal

Ezután megvizsgáljuk az ON CONFLICT és a DO záradékokat. Ahogy a neve is jelzi, a ___ záradék hibát vagy ütközést fog végrehajtani, amikor egy duplikált értéket beillesztenek egy táblába. Ugyanazt az insert parancsot fogjuk használni, amelyet korábban használtunk egy duplikátum bejegyzés beillesztésére a 'személy' táblába, kisebb változtatásokkal. Hozzáadtuk az ON CONFLICT záradékot, benne a DO záradékot. Amikor a felhasználó megpróbálja beilleszteni a nem egyedi értéket az „id” oszlopba, a konfliktus elkerülése érdekében műveletet hajt végre. A DO záradék után használtuk az UPDATE záradékot, amely a 'személy' táblázat adatainak frissítését jelzi. A SET kulcsszóval a „név” oszlop értékét az új, „Habib” értékre állíthatjuk, a KIZÁRVA kulcsszóval, ahol az „id” az adott pillanatban „3”. Ha végrehajtja a következő lekérdezést, látni fogja, hogy a lekérdezés végrehajtásra került.

>> INSERT INTO személy (azonosító, név, életkor, város, ország) ÉRTÉKEK ('3', 'Habib', '45', 'Chakwal', 'Pakisztán') KONFLIKTUSON (id) DO UPDATE SET SET name = EXCLUDED.név;

A fenti lekérdezés változásainak megtekintéséhez be kell tölteni a „személy” tábla rekordjait. Ha a következő lekérdezést hajtja végre a parancssori héjban, látnia kell a következő kimenetet.

>> SELECT * FROM személy;

Amint az alábbi kimenetből látható, a személy neve „Habib” -ra változott, ahol az „id” '3."

Az INSERT lekérdezés ON CONFLICT záradékában található EXCLUDED kulcsszó segítségével az oszlopokat egynél több oszlopban is frissítheti, az alábbiak szerint.

>> INSERT INTO személy (azonosító, név, életkor, város, ország) ÉRTÉKEK ('3', 'Habib', '45', 'Chakwal', 'Pakisztán') KONFLIKTUSON (id) DO UPDATE SET SET name = EXCLUDED.név, város = KIZÁRVA.város;

A változásokat az alábbiakban mutatjuk be.

>> SELECT * FROM személy;

Következtetés

Ez a cikk bemutatta, hogyan kell használni a PostgreSQL 'Upsert' funkciót az ON CONFLICT záradékkal, a DO and DO NOTHING műveletekkel együtt. A cikk elolvasása után reméljük, hogy könnyebben meg fogja érteni, hogyan kell használni a PostgreSQL 'Upsert alkalmazást."

Az OSD-fedvény megjelenítése teljes képernyős Linux-alkalmazásokban és játékokban
Teljes képernyős játékok lejátszása vagy alkalmazások figyelemelterelés nélküli, teljes képernyős módban történő használata elvághatja a panelen vagy ...
Az 5 legjobb játékrögzítő kártya
Mindannyian láttuk és szerettük a YouTube-on a streaming játékokat. A PewDiePie, a Jakesepticye és a Markiplier csak néhány a legnépszerűbb játékosok ...
Hogyan lehet játékot fejleszteni Linuxon
Egy évtizeddel ezelőtt nem sok Linux-felhasználó jósolta, hogy kedvenc operációs rendszerük egy napon a videojátékok népszerű játékplatformja lesz. El...