..


Sponsorerede links

Mindre forespørgsler med INSERT ... PÅ ens nøgler UPDATE

Artikel skrevet af Max Bossi

Og 'velkendt, at en korrekt forespørgsel ledelse er en forudsætning for en stabil og effektiv gennemførelse.
I denne artikel vil vi præsentere en lidet kendt men meget kraftfuld syntaks, jeg taler om den ON ens nøgler UPDATE klausul.

Denne klausul er brugt i løbet af en INSERT-sætning og dens formål er at kontrollere, før indrykning, er der en gentagelse af en primær nøgle (primær nøgle) eller en unik nøgle (unik nøgle), og hvis dette sker motoren un'UPDATE MySQL vil i stedet indsætte.

Fordelen ved denne klausul er klar: du skriver en enkelt forespørgsel i stedet for to med fordele i form af performance og kode oprydning.

Lad os tage et eksempel. Antag, at vi vil lave et simpelt script, der udfører logningen af ​​besøgende på vores hjemmeside. Under tabellen strukturen i vores DB:

  • IP (nøgle)
  • numero_visite
  • ultima_visita
Ønsker at registrere alle IP i transit på vores sider, vi har, ifølge den sædvanlige logik, lave en SELECT første foreløbige kontrollere, at IP ikke er allerede i BF, og kun hvis svaret er negativt (IP ikke er til stede) til at søge INSERT.

Takket være den syntaks INSERT ... PÅ ens nøgler UPDATE ... vi kan opnå det samme resultat med en enkelt forespørgsel:

 



 INSERT INTO ip_visitatori VALUES ('123 .123.123.123 ', 1, NOW ())

 





 OM CENTRALE DPLICATE







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

 
Så hvis IP er inklusion er lavet, ellers kan du køre en simpel opdatering af de berørte rekord. Brug denne syntaks gør det muligt at opnå en fordel i form af performance svarende til 30%.

Med lidt fantasi og opfindsomhed af den pågældende bestemmelse kan der være meget nyttig i forskellige omstændigheder.
For eksempel kan vi bruge det i kombination med en betingelse. Her er et eksempel: Antag at du har en tabel over en hypotetisk online-auktion site struktureret som følger:

  • ID_asta
  • migliore_offerta
Antag, at du vil fortsætte med placeringen af ​​et nyt tilbud, hvis auktionen allerede har tilbudt, vil der være en enkel opgradering, men kun hvis tilbuddet er højere end den, der allerede findes:
 



 Tilbud INSERT INTO VALUES (1, 120)

 





 OM CENTRALE DPLICATE







 UPDATE migliore_offerta = HVIS (værdier (migliore_offerta) <120, 120, VALUES (migliore_offerta))

 
Gennem en simpel forespørgsel har vi løst med ét slag ... Ellers ville vi have haft til at bruge flere forespørgsler med deraf følgende spild af ressourcer (og en større risiko for fejl).

I den samme kategori ...
E-Learning
MS Access (Avanceret) MS Access (Avanceret)
Lær at oprette og administrere databaser hurtigt og nemt. Fra 29 €.
MySQL (Kursus) MySQL (Kursus)
Forvaltning af open source-database. Fra 39 €.
SQL-og Database (Kursus) SQL-og Database (Kursus)
Oprette og administrere relationelle databaser. Fra 39 €.
Sponsorerede links