RekenaarsDatabasisse

"Slaggate" van die DML-opdrag Update MySQL

Elke programmeerder wat met databasisse moes werk, het DML-operateurs gekonfronteer (soos die "data manipulasie taal"), soos Kies , Voeg in , Skrap en Update . Die MySQL-omgewing gebruik ook al die bogenoemde opdragte in sy arsenaal.

Hierdie operateurs praat logies oor hul doel - kies rekords, voeg nuwe waardes by, dateer bestaande data op, vol of volgens gespesifiseerde voorwaardes, verwydering van inligting in die databasis. Onderrig van teoretiese materiale beskryf die werksbeginsel van elke span en hul sintaksis in detail, maar daar word nie melding gemaak van probleme wat tydens gebruik tydens die praktyk mag voorkom nie. Hierdie materiaal sal gewy word aan die oorweging van sommige van hulle.

Kortliks oor DML-operateurs (Invoeg)

Voordat u verder gaan, is dit nodig om die doel van elk van die funksies weer in meer detail te herroep. Ons sal meer geïnteresseerd wees in twee operateurs: Invoeg en Werk , aangesien dit uit hierdie is dat die grootste probleme ontstaan wanneer groot hoeveelhede data verwerk word .

Jy moet begin met die opdrag Invoeg , en gaan dan glad na Update. Die MySQL- stelsel, soos enige ander moderne DBMS, gebruik die Insert- operasie om nuwe inskrywings by bestaande databasis tabelle by te voeg . Die sintaksis van hierdie operasie is baie eenvoudig en reguit. Dit bevat 'n opsomming van die velde waar die waardes ingevoer sal word, die bestemming is die naam van die tabel - en die lys van die inskrywings direk. Elke keer as die opdrag Invoeging uitgevoer word, sal die databasis opgedateer word met nuwe waardes.

Update Operateur

In die praktyk ontstaan egter dikwels dat daar vir een stel data een of meer eienaardige waardes opgedateer moet word. As voorbeeld kan ons die situasie noem as die onderneming 'n hervorming ondergaan het met die verdere hernoeming van die hoofdepartemente. In hierdie geval is dit nodig om veranderinge vir elke departement te maak. As net die name verander, dan word die probleem baie vinnig opgelos. Maar as die kodering van elke komponent van die hele produksie verander, wat in die reël as die primêre sleutel dien, behels dit veranderinge in die inligting en vir elke werknemer.

Om hierdie probleem op te los, kan 'n DML-operateur - Update toegepas word . Die MySQL- bediener, wat met 'n groot aantal rekords werk, gebruik die opdateringsoperateur, sal die gevraagde soektog uitvoer en die probleem oplos. Maar soms is daar nie baie duidelik en moeilik om probleme te verduidelik nie. Dit gaan oor die kompleksiteit van die opdatering van rekords wat later bespreek sal word.

Oor wat min in teorie gesê word ...

Die opdrag, soos hierbo genoem, word gebruik om bestaande rekords in die tabel op te dateer. Maar in die praktyk, kliënte wat toegang tot databasis bedieners is nie altyd bekend nie, daar is 'n sekere stel data in die tabelle of nie. Voorlopige verifikasie van die beskikbaarheid van data in die databasis vir latere opdaterings lei tot tydrowende en vermorsende bedienervermoëns.

Om dit te vermy, bevat die DBMS 'n spesiale MySQL - Insert * Update- konstruksie, waarin invoeg of opdatering onafhanklik van mekaar uitgevoer kan word. Dit is wanneer daar 'n inskrywing vir 'n sekere toestand in die tabel is, sal 'n opdatering plaasvind. As daar geen data vir die betrokke toestand gevind word nie, sal die MySQL-bediener die data-aanvullende versoek kan uitvoer.

Dateer data as daar duplikate is

'N Belangrike komponent van so 'n Insert - navraag in die MySQL- databasisbestuurstelsel is die "On Duplicate Key Update" -voorvoegsel. Die volledige sintaksis van die soektog is soos volg: " voeg in die toets_tabel (werkgewer_id, naam) waardes (1, 'Abramov') op duplikaat sleutel update last_modified = NOW (); ".

So 'n versoek kan gebruik word om werknemers se optrede op te teken, byvoorbeeld om die kruistyd van die verbygaande onderneming te bepaal met die daaropvolgende berekening van die tyd van die breek en die identifisering van vertragings. Om nie verskeie rekords in die tabel in te voer nie, is dit genoeg vir elke werknemer om rekords te hou met 'n permanente opdatering. Dit is die ontwerp van die duplikaat tjek waarmee jy dit kan doen.

Eintlik oor die probleme ...

As gevolg van die bostaande voorbeeld van die registrasie van werknemers se aksies by die kontrolepunt, kan die probleem die gebruik van outomatiese inkrement velde wees, wat gewoonlik gebruik word om die waardes van primêre _keys te vul. By die gebruik van die MySQL Update opdrag in 'n ontwerp met Insert Auto _ inkrement, die velde word voortdurend aan die toeneem.

Net so gebeur alles wanneer die vervangingsontwerp gebruik word, in die geval van duplikaatopsporing. "Autoincremental" waarde verhoog selfs wanneer dit nie nodig is nie. As gevolg hiervan is daar probleme met ontbrekende waardes of oorloop van die reeks, wat gevolglik lei tot oortredings van die prestasie van databasisbestuurstelsels.

Die grootste waarskynlikheid van die voorkoms van 'n probleem

Die probleem wat beskryf word, moet deur webontwikkelaars oorweeg word, aangesien dit die algemeenste is in multi-gebruiker stelsels (webwerwe, portale, ens.), Wanneer 'n groot aantal Insert En Update MySQL.

PHP - Oproepe na die databasis word baie gereeld uitgevoer. Daarom is die bereiking van die maksimum waarde deur die velde gedefinieer as auto_increment vinnig, en wanneer die probleme ondervind word, is dit onmoontlik om die oorsake dadelik te bepaal.

Daarom word ontwikkelaars aangeraai om die gebruik van die duplikaat sleutel op die mysql update bevel noukeurig te benader . Kies - navrae wanneer toegang tot die databasis bediener sal werk sonder foute, maar die byvoeging van nuwe rekords in die databasis is belaai met onaangename situasies wat gevolglik ernstige probleme veroorsaak. As alternatief word dit aanbeveel dat die outomatiese invoegingsvelde aanvanklik die beskikbaarheid van rekords vir hulle kontroleer en dan dit opdateer.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 af.unansea.com. Theme powered by WordPress.