PostgreSQL

PostgreSQL pievienojiet konfliktu

PostgreSQL pievienojiet konfliktu
Izteiksme 'Upsert' RDBMS tiek atzīta par apvienošanos. Ja jūs nevēlaties tikt galā ar unikālām ierobežojumu pārkāpumu kļūdām atkārtotu ierakstu dēļ, PostgreSQL ir noderīga “Upsert”. Palaidot vispārīgu komandu UPDATE, nepieciešamie pielāgojumi tiks veikti tikai tad, ja ieraksts atbilst komandu standartiem; ja šādu datu nav, tad nekas nenotiek. Pievienojot tabulai jaunu rindu, PostgreSQL atjauninās rindu, ja tā pastāvēja iepriekš, vai arī tā iekļaus jauno rindu, ja rindas nebija. SQL atslēgvārds “Upsert” apvieno vārdus “update” un “insert”.”Šajā rakstā ir parādīts, kā darbojas PostgreSQL funkcija“ Upsert ”, kā arī kā izmantot funkciju“ Upsert ”, lai pievienotu vai atjauninātu informāciju, ja ievietotā rinda jau pastāv tabulā.

Sintakse

Šī ir vaicājuma “Upsert ON CONFLICT” sintakse.

>> INSERT INTO table_name (column_list) VALUSE (value_list) ON CONFLICT target action;

Palaidiet PostgreSQL komandrindas apvalku

Lai sāktu, izvēlnē Lietojumprogramma palaidiet komandrindas čaulu PostgreSQL. Pievienojiet to vajadzīgajam serverim. Ievadiet datu bāzes nosaukumu, ar kuru vēlaties strādāt. Lai strādātu ar citu portu, ierakstiet porta numuru un lietotājvārdu, ar kuru vēlaties strādāt. Lai turpinātu ar noklusējuma parametriem, atstājiet atstarpes tādas, kādas tās ir, un pie katras opcijas nospiediet taustiņu Enter. Pievienojiet paroli atlasītajam lietotājvārdam, un jūsu komandu čaulai jābūt gatavai lietošanai.

1. piemērs:

Tagad mēs varam sākt darbu ar “Upsert” konfliktā. Pieņemsim, ka atlasītajā datu bāzē jums ir tabula ar nosaukumu “persona” ar dažiem laukiem, kas parāda dažādu personu ierakstus. Šie ieraksti parāda cilvēku vārdus, vecumu, kā arī viņu pilsētas un valstis. Tabula ir parādīta zemāk.

>> SELECT * NO personas;

Ir svarīgi zināt, kā var rasties kļūda vai konflikts. Tabulas laukā id, kas ir arī galvenā atslēga, ir vērtības no 1 līdz 15. Kad lietotājs mēģina tabulā ievietot dažus ierakstu dublikātus, rodas konflikts.

Izmēģināsim šo INSERT paziņojumu, ierakstus ievietojot tabulā “person”. Šis vaicājums radīs kļūdu, jo lauka “id” vērtība “3” jau pastāv tabulā.

>> IEVADĪT personai (ID, vārds, vecums, pilsēta, valsts) VĒRTĪBAS ('3', 'Habib', '45', 'Chakwal', 'Pakistan');

2. piemērs: Aizstājiet klauzulu ar ON CONFLICT

Mēs izmantosim klauzulu ON CONFLICT, lai izvairītos no vaicājuma INSERT, kas izraisa šo kļūdu ierakstu dublikātu ievietošanas dēļ. Komanda ON CONFLICT nāk klajā ar divām frāzēm ar dažādiem lietojumiem.

3. piemērs: Pārliecinieties ar klauzulu NEKO nedarīt

Šajā piemērā mēs aplūkosim klauzulu NEKO NEDARĪT. Šajā klauzulā ir precizēts, ka kļūda vai konflikts netiks veikts. Citiem vārdiem sakot, šī klauzula tikai novērsīs konfliktus vai kļūdas.

Izmēģināsim to pašu komandu INSERT, kuru izmantojām iepriekš, lai tabulai “persona” pievienotu ierakstu dublikātus, pievienojot dažas izmaiņas. Mēs esam pievienojuši klauzulu ON CONFLICT kopā ar paziņojumu DO NOTHING šajā klauzulā. Klauja ON CONFLICT ir lietota unikālajai kolonnai “id”. Tas nozīmē, ka tad, kad lietotājs mēģina ievietot kolonnas “id” dublikāta vērtību, tas izvairīsies no konflikta un neko nedarīs. Kā redzat zemāk redzamajā attēlā, tas pat neievietos jauno ierakstu tabulā, kā arī neatjauninās iepriekšējo ierakstu.

>> IERAKSTIET personai (ID, vārds, vecums, pilsēta, valsts) VĒRTĪBAS ('3', 'Habib', '45', 'Chakwal', 'Pakistan') PAR KONFLIKTU (id) NEKO NEDARĪT;

Pārbaudīsim tabulu “persona” vēlreiz autentiskuma labad. Kā redzat attēlā zemāk, tabulā nav veiktas izmaiņas.

>> SELECT * NO personas;

2. piemērs: Ievietojiet klauzulu ar DO

Tālāk mēs aplūkosim klauzulas ON CONFLICT un DO. Kā norāda nosaukums, klauzula ___ veiks kļūdas vai konflikta gadījumā, kad tabulā tiks ievietota vērtības dublikāts. Mēs izmantosim to pašu komandu insert, kuru iepriekš izmantojām, lai tabulā “persona” ievietotu ieraksta dublikātu, ar nelielām izmaiņām. Mēs esam pievienojuši klauzulu ON CONFLICT ar DO klauzulu tās iekšpusē. Kad lietotājs mēģina kolonnā “id” ievietot unikālo vērtību, viņš veiks darbību, lai izvairītos no konflikta. Pēc DO klauzulas mēs izmantojām klauzulu UPDATE, kas norāda tabulas “persona” datu atjauninājumu. Atslēgvārdu SET izmanto, lai slejas “nosaukums” vērtību iestatītu uz jauno vērtību “Habib”, izmantojot atslēgvārdu EXCLUDED, kur pašreizējais “id” ir “3”. Izpildot šo vaicājumu, redzēsit, ka vaicājums ir izpildīts.

>> INSERT INTO persona (id, vārds, vecums, pilsēta, valsts).nosaukums;

Tabulas “person” ieraksti ir jāielādē, lai redzētu izmaiņas iepriekš minētajā vaicājumā. Ja izpildāt šo vaicājumu komandrindas čaulā, jums vajadzētu redzēt nākamo izvadi.

>> SELECT * NO personas;

Kā redzams zemāk esošajā izvadā, personas vārds ir atjaunināts uz “Habib”, kur “id” ir “3."

Varat arī atjaunināt ierakstus vairākās kolonnās, izmantojot INSERT vaicājuma ON CONFLICT klauzulu EXCLUDED, kā parādīts zemāk.

>> INSERT INTO persona (id, vārds, vecums, pilsēta, valsts).nosaukums, pilsēta = IZSLĒGTS.pilsēta;

Izmaiņas ir parādītas zemāk.

>> SELECT * NO personas;

Secinājums

Šis raksts parādīja, kā izmantot PostgreSQL 'Upsert' ar klauzulu ON CONFLICT, kā arī ar DO un NOT NOTHING darbībām. Pēc šī raksta izlasīšanas mēs ceram, ka jums būs vieglāk saprast, kā lietot PostgreSQL 'Upsert."

Kā instalēt League of Legends operētājsistēmā Ubuntu 14.04
Ja jūs esat League of Legends fans, tad šī ir iespēja jums izmēģināt League of Legends. Ņemiet vērā, ka LOL tiek atbalstīts PlayOnLinux, ja esat Linux...
Instalējiet jaunāko OpenRA stratēģijas spēli Ubuntu Linux
OpenRA ir bezmaksas / bezmaksas reāllaika stratēģijas spēļu dzinējs, kas atjauno agrīnās Vestvudas spēles, piemēram, klasisko Command & Conquer: Red A...
Instalējiet jaunāko Dolphin emulatoru Gamecube un Wii operētājsistēmai Linux
Delfīnu emulators ļauj jums spēlēt izvēlētās Gamecube un Wii spēles Linux personālajos datoros (PC). Tā kā Dolphin Emulator ir brīvi pieejams un atvē...