PostgreSQL

PostgreSQL Upsert på konflikt

PostgreSQL Upsert på konflikt
Udtrykket 'Upsert' anerkendes som en fusion i RDBMS. Et 'Upsert' er nyttigt at have med PostgreSQL, hvis du ikke ønsker at håndtere unikke fejl med begrænsningskrænkelser på grund af gentagne poster. Når du kører en generel UPDATE-kommando, finder de nødvendige justeringer kun sted, hvis en post passer til kommandostandarderne; hvis der ikke findes sådanne data, sker der intet. Når du tilføjer en ny række til en tabel, opdaterer PostgreSQL rækken, hvis den eksisterede tidligere, ellers vil den inkorporere den nye række, hvis rækken ikke eksisterede. SQL-nøgleordet 'Upsert' kombinerer ordene "opdatering" og "indsæt.”Denne artikel viser dig, hvordan PostgreSQL 'Upsert' -funktionen fungerer, samt hvordan du bruger 'Upsert' -funktionen til at tilføje eller opdatere oplysninger, hvis den indsatte række allerede findes i tabellen.

Syntaks

Følgende er syntaksen for forespørgslen 'Upsert' ON CONFLICT.

>> INDSÆT TIL tabelnavn (kolonneliste) VALUSE (værdi_liste) PÅ KONFLIKT-målhandling;

Start PostgreSQL Command Line Shell

Start med at starte PostgreSQL kommandolinjeskal fra menuen Applikation. Tilslut den til den nødvendige server. Indtast det databasenavn, du vil arbejde på. For at arbejde på en anden port skal du skrive portnummeret og det brugernavn, du vil arbejde med. For at fortsætte med standardparametrene skal du lade mellemrumene være som de er og trykke på 'Enter' ved enhver mulighed. Tilføj en adgangskode til det valgte brugernavn, og din kommandoskal skal være klar til brug.

Eksempel 1:

Nu kan vi komme i gang med 'Upsert' i konflikt. Antag at du har en tabel med titlen 'person' i en valgt database med nogle felter, der viser optegnelser over forskellige personer. Disse optegnelser viser navnene på folket, deres alder og deres byer og lande. Tabellen vises nedenfor.

>> VÆLG * FRA person;

Det er vigtigt at vide, hvordan en fejl eller konflikt kan opstå. Feltet 'id', som også er en primær nøgle, indeholder værdier fra 1 til 15. Når brugeren forsøger at indsætte nogle duplikatposter i tabellen, opstår konflikten.

Lad os prøve følgende INSERT-sætning og indsætte poster i 'person' -tabellen. Denne forespørgsel vil forårsage en fejl, fordi værdien '3' i feltet 'id' allerede findes i tabellen.

>> INDSÆT I person (id, navn, alder, by, land) VÆRDIER ('3', 'Habib', '45', 'Chakwal', 'Pakistan');

Eksempel 2: Upsert With ON CONFLICT Clause

Vi bruger ON CONFLICT-klausulen for at undgå den INSERT-forespørgsel, der forårsager denne fejl på grund af indsættelse af de duplikatposter. ON CONFLICT kommandoen kommer med to sætninger med forskellige anvendelser.

Eksempel 3: Opsæt med DO NOTHING-klausul

I dette eksempel vil vi se på DO NOTHING-klausulen. Denne klausul uddyber, at der ikke udføres nogen operation efter fejl eller konflikt. Med andre ord vil denne klausul kun undgå konflikt eller fejl.

Så lad os prøve den samme INSERT-kommando, som vi brugte tidligere til at tilføje duplikatposter til 'person' -tabellen med et par ændringer tilføjet. Vi har tilføjet ON CONFLICT-klausulen sammen med sætningen "NOT NOTING" i denne klausul. ON CONFLICT-klausulen er blevet anvendt på den unikke 'id'-kolonne. Dette betyder, at når brugeren forsøger at indsætte den dobbelte værdi i kolonnen 'id', vil den undgå konflikten og ikke gøre noget. Som du kan se på billedet nedenfor, indsætter den ikke engang den nye post i tabellen, og den opdaterer heller ikke den tidligere post.

>> INDSÆT I person (id, navn, alder, by, land) VÆRDIER ('3', 'Habib', '45', 'Chakwal', 'Pakistan') PÅ KONFLIK (id) Gør intet;

Lad os kontrollere tabellen 'person' igen for ægthedens skyld. Som du kan se på billedet nedenfor, er der ikke foretaget ændringer i tabellen.

>> VÆLG * FRA person;

Eksempel 2: Opsæt med DO-klausul

Dernæst vil vi se på ON CONFLICT og DO-klausulerne. Som navnet antyder, vil ___-klausulen udføre en handling efter fejl eller konflikt, når en duplikatværdi indsættes i en tabel. Vi bruger den samme insert-kommando, som vi tidligere brugte til at indsætte en duplikatpost i 'person' -tabellen med en mindre ændring. Vi har tilføjet ON CONFLICT-klausulen med DO-klausulen inde i den. Når brugeren forsøger at indsætte den ikke-unikke værdi i kolonnen 'id', udfører den en handling for at undgå konflikten. Vi har brugt UPDATE-klausulen efter DO-klausulen, som indikerer en opdatering af dataene i 'person'-tabellen. SET-nøgleordet bruges til at indstille værdien i kolonnen 'navn' til den nye værdi 'Habib' ved hjælp af nøgleordet EKSKLUDERET, hvor 'id' er '3' på det aktuelle tidspunkt. Hvis du udfører følgende forespørgsel, vil du se, at forespørgslen er udført.

>> INDSÆT I person (id, navn, alder, by, land) VÆRDIER ('3', 'Habib', '45', 'Chakwal', 'Pakistan') PÅ KONFLIKT (id) DO UPDATE SET name = EXKLUDERET.navn;

Fortegnelserne i tabellen 'person' skal hentes for at se ændringerne i ovenstående forespørgsel. Hvis du udfører følgende forespørgsel i kommandolinjeskallen, skal du se den efterfølgende output.

>> VÆLG * FRA person;

Som du kan se fra nedenstående output er personens navn blevet opdateret til 'Habib', hvor 'id' er '3.''

Du kan også opdatere posterne i mere end en kolonne ved hjælp af det EKSKLUDEREDE nøgleord i klausulen ON CONFLICT i INSERT-forespørgslen, som vist nedenfor.

>> INDSÆT I person (id, navn, alder, by, land) VÆRDIER ('3', 'Habib', '45', 'Chakwal', 'Pakistan') PÅ KONFLIKT (id) DO UPDATE SET name = EXKLUDERET.navn, by = EKSKLUDERET.by

Ændringerne er vist nedenfor.

>> VÆLG * FRA person;

Konklusion

Denne artikel viste dig, hvordan du bruger PostgreSQL 'Upsert' med ON CONFLICT-klausulen sammen med handlingerne DO og DO NOTHING. Efter at have læst denne artikel håber vi, at du finder det lettere at forstå, hvordan du bruger PostgreSQL 'Upsert.''

Mus Efterlig museklik ved at svæve ved hjælp af Clickless Mouse i Windows 10
Efterlig museklik ved at svæve ved hjælp af Clickless Mouse i Windows 10
Brug af en mus eller et tastatur i den forkerte kropsholdning af overdreven brug kan resultere i mange sundhedsmæssige problemer, herunder stamme, kar...
Mus Føj musbevægelser til Windows 10 ved hjælp af disse gratis værktøjer
Føj musbevægelser til Windows 10 ved hjælp af disse gratis værktøjer
I de senere år har computere og operativsystemer udviklet sig meget. Der var et tidspunkt, hvor brugerne skulle bruge kommandoer til at navigere genne...
Mus Styr og administrer musebevægelse mellem flere skærme i Windows 10
Styr og administrer musebevægelse mellem flere skærme i Windows 10
Dual Display Mouse Manager lader dig kontrollere og konfigurere musebevægelse mellem flere skærme ved at bremse dens bevægelser nær grænsen. Windows 1...