..


Sponzorované odkazy

Menej otázky s INSERT ... O DUPLICATE KEY UPDATE

Článok napísal Max Bossi

A "dobre známe, že správny dotaz konania je podmienkou pre stabilnú a efektívnu realizáciu.
V tomto článku sa budeme prezentovať málo známy, ale veľmi silný syntax, hovorím o ON DUPLICATE KEY UPDATE bod.

Toto ustanovenie sa používa pri INSERT a jeho účelom je overiť, pred vložením, je zdvojenie primárny kľúč (primárny kľúč), alebo jedinečný kľúč (UNIQUE KEY), a ak sa tak stane motor un'UPDATE MySQL sa miesto toho vložiť.

Výhodou tohto ustanovenia je jasný: píšete jeden dotaz namiesto dvoch s výhodami z hľadiska výkonu a vyčistenie kódu.

Zoberme si príklad. Predpokladajme, že chceme vytvoriť jednoduchý skript, ktorý vykoná záznam návštevníkov našich stránok. Pod tabuľkou štruktúru našej databázy:

  • IP (key)
  • numero_visite
  • ultima_visita
Chcieť záznam všetkých IP na ceste na našich stránkach sme sa, v súlade s obvyklými logiku, to SELECT prvé predbežné Skontrolujte, či IP už nie je v DB, a iba v prípade, že odpoveď je záporná (IP nie je k dispozícii) na dotaz INSERT.

Vďaka syntaxe INSERT ... O DUPLICATE KEY UPDATE ... môžeme dosiahnuť rovnaký výsledok s jedným dotazom:

 



 INSERT na hodnoty ip_visitatori (123 .123.123.123 ', 1, TERAZ ())

 





 O KEY DPLICATE







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

 
Preto, ak je IP je zaradenie je, inak spustiť jednoduchý update postihnutých záznamu. Pomocou tejto syntaxe umožňuje získať výhody z hľadiska výkonu vo výške 30%.

S trochou "predstavivosť a vynaliezavosť v otázke klauzula, že môže byť veľmi užitočné v rôznych situáciách.
Napríklad môžeme použiť v kombinácii s podmienkou. Tu je príklad: Predpokladajme, že máte tabuľku hypotetické on-line aukčnej web v nasledujúcej štruktúre:

  • ID_asta
  • migliore_offerta
Predpokladajme, že chcete pokračovať s umiestnením nové ponuky, ak aukcie už ponúkol, že bude jednoduchý upgrade, ale iba v prípade, že ponuka je vyššia ako už tam:
 



 Ponuky INSERT na hodnoty (1, 120)

 





 O KEY DPLICATE







 UPDATE migliore_offerta = IF (hodnoty (migliore_offerta) <120, 120, hodnoty (migliore_offerta))

 
Prostredníctvom jednoduchého otázky sme vyriešili jedným ťahom pera ... V opačnom prípade by sme museli použiť niekoľko otázok s následným plytvanie zdrojmi (aj väčšie riziko chýb).

V rovnakej kategórii ...
E-Learning
MS Access (Advanced) MS Access (Advanced)
Naučte sa vytvárať a spravovať databázy jednoducho a rýchlo. Od 29 €.
MySQL (kurz) MySQL (kurz)
Správa open-source databázy. Od 39 €.
SQL a databáz (kurz) SQL a databáz (kurz)
Vytváranie a správa relačnej databázy. Od 39 €.
Sponzorované odkazy