..


Sponsorētās saites

Mazāk vaicājumi ar INSERT ... ON DUPLICATE KEY UPDATE

Raksts raksta Max Bossi

Un "labi zināms, ka pareizs vaicājums vadības priekšnoteikums ir stabila un efektīva īstenošana.
Šajā rakstā mēs klāt maz zināms, bet ļoti spēcīgs sintakse, es runāju par to ON DUPLICATE KEY UPDATE klauzulu.

Šī klauzula tiek izmantots INSERT paziņojumu un tā mērķis ir pārbaudīt, pirms ievietošanas, ir dubulta primārā atslēga (primārā atslēga) vai unikālu atslēgu (unikālu atslēgu), un ja tas notiek dzinēja un'UPDATE MySQL tā vietā ievietot.

Šīs klauzulas priekšrocība ir skaidrs: jums rakstīt vienu vaicājumu, nevis divus ar priekšrocībām attiecībā uz kvalitāti un koda tīrīšana.

Apskatīsim piemēru. Pieņemsim, ka mēs vēlamies, lai vienkāršu skriptu, kas veic mežizstrādes apmeklētāju mūsu vietā. Zem tabulas struktūra mūsu DB:

  • IP (taustiņš)
  • numero_visite
  • ultima_visita
Vēlas ierakstīt katru IP tranzīta mūsu lapās mums ir, saskaņā ar parasto loģiku, do SELECT pirmo provizorisko pārbaudiet, IP jau nav DB, un tikai tad, ja atbilde ir negatīva (IP nav klāt), lai vaicājumu INSERT.

Pateicoties sintaksi INSERT ... ON NORAKSTS KEY UPDATE ... mēs varam sasniegt to pašu rezultātu ar vienu vaicājumu:

 



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

 





 ON KEY DPLICATE







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

 
Tādējādi, ja IP ir iekļaušana notiek, citādi jūs palaist vienkāršu update skarto ieraksta. Izmantojot šo sintakse ļauj iegūt labumu izpildījuma ziņā ir vienāds ar 30%.

Ar mazliet "iztēles un izdomas klauzulu, attiecīgā tur var būt ļoti noderīgi dažādos apstākļos.
Piemēram, mēs varam izmantot to kombinācijā ar nosacījumu. Šeit ir piemērs: Pieņemsim, ka jums ir tabula ar hipotētisku tiešsaistes izsoles vietnes struktūra ir šāda:

  • ID_asta
  • migliore_offerta
Pieņemsim, ka vēlaties turpināt ar izvietošanu jaunu piedāvāt, ja izsole ir jau piedāvāja, ka būs vienkārša jauninājums, bet tikai tad, ja piedāvājums ir lielāks nekā jau tur:
 



 Piedāvā INSERT INTO VALUES (1, 120)

 





 ON KEY DPLICATE







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

 
Ar vienkāršu vaicājumu, mēs atrisināt vienā samazinājās sagrābt ... Pretējā gadījumā mums nāktos izmantot vairākus vaicājumus ar sekojošu resursu izšķērdēšana (un lielāks risks kļūdas).

Šajā pašā kategorijā ...
E-Learning
MS Access (Advanced) MS Access (Advanced)
Uzziniet, kā izveidot un pārvaldīt datubāzes ātri un viegli. Sākot ar 29 €.
MySQL (Kurss) MySQL (Kurss)
Vadība ir atvērtā koda datu bāzi. Sākot no € 39.
SQL un datu bāzes (Course) SQL un datu bāzes (Course)
Izveidot un pārvaldīt relāciju datu bāzēm. Sākot no € 39.
Sponsorētās saites