..


Sponzorirani linkovi

Manje INSERT upita sa ... O DUPLIKAT KLJUČ UPDATE

Članak je napisao Max Bossi

I 'dobro poznato da ispravan upit za upravljanje je preduvjet za stabilan i učinkovitu provedbu.
U ovom članku ćemo predstaviti malo poznate, ali vrlo moćan sintakse, ja govorim o O DUPLIKAT KEY UPDATE klauzulu.

Ova klauzula se koristi tijekom INSERT izjava i njegova svrha je da se provjeriti prije umetanja, tu je dupliciranje primarni ključ (primarni ključ) ili jedinstveni ključ (jedinstveni ključ), a ako se to dogodi motor un'UPDATE MySQL umjesto toga umetnuti.

Prednost ove klauzule je jasno: pišete jedan upit umjesto dva s prednostima u pogledu performansi i kod čišćenja.

Uzmimo primjer. Pretpostavimo da želimo napraviti jednostavna skripta koja obavlja logiranje posjetitelja na našim stranicama. Ispod tablice strukture naše DB:

  • IP (tipka)
  • numero_visite
  • ultima_visita
U želji da snimiti svaki IP tranzit na našim stranicama imamo, u skladu s uobičajenom logikom, prvo provjerite preliminarni SELECT kako bi provjerili da je IP je već nije u DB i samo ako je odgovor negativan (IP nije prisutan) na upit INSERT.

Zahvaljujući sintaksa INSERT ... O DUPLIKAT KLJUČ UPDATE ... možemo postići isti rezultat sa jednim upitom:

 



 Ip_visitatori INSERT INTO VRIJEDNOSTI ('123 .123.123.123 ', 1, sada ())

 





 O ključnim DPLICATE







 UPDATE numero_visite numero_visite = + 1, ultima_visita = SADA ();

 
Dakle, ako je IP nije umetanje je napravio, inače pokrenete jednostavno ažuriranje utječe zapisa. Korištenjem ove sintakse omogućuje vam da dobivanje koristi u pogledu performansi jednaka 30%.

Uz malo "mašte i genijalnosti klauzule u pitanju može biti vrlo korisno u raznim okolnostima.
Na primjer možemo koristiti u kombinaciji s uređajem. Evo primjera: Pretpostavimo da imate tablicu hipotetski online aukcija web strukturiran na sljedeći način:

  • ID_asta
  • migliore_offerta
Pretpostavimo da želite nastaviti s umetanjem nove ponude, ako je aukcija već je ponudio da će biti jednostavna nadogradnja, ali samo ako je ponuda viša od već prisutan:
 



 INSERT INTO ponude VRIJEDNOSTI (1, 120)

 





 O ključnim DPLICATE







 UPDATE migliore_offerta = IF (vrijednosti (migliore_offerta) <120, 120, VRIJEDNOSTI (migliore_offerta))

 
Kroz jednostavan upit ćemo riješiti u jednom naletu ... Inače bismo morali koristiti nekoliko upita što je rezultiralo rasipanje resursa (i veći rizik od pogrešaka).

U istoj kategoriji ...
E-učenje
MS Access (tečaj) MS Access (tečaj)
Saznajte kako stvoriti i upravljati bazama podataka jednostavno i brzo. Počevši od 29 €.
MySQL (tečaj) MySQL (tečaj)
Upravljanje open-source baza podataka. Počevši od 39 €.
SQL i baze podataka (tečaj) SQL i baze podataka (tečaj)
Stvaranje i upravljanje relacijskim bazama podataka. Počevši od 39 €.
Sponzorirani linkovi