ComputersDatabases

"Valkuilen" DML-Team update MySQL

Iedere programmeur, die moest werken met databases, geconfronteerd met de DML-operators (vertaald uit het Engels - .. "Data Manipulation Language"), zoals Select, Invoegen, Verwijderen en Update. MySQL-transport maakt ook gebruik van haar arsenaal van al het bovenstaande commando's.

Deze uitspraken zijn logisch over zijn benoeming - Records selecteren, plaatst nieuwe waarden, het bijwerken van bestaande gegevens, volledig of in overeenstemming met de aangegeven voorwaarden, de verwijdering van de informatie in de database. De theoretische opleiding materialen zijn beschreven in detail het principe van de werking van elke opdracht en hun syntax, maar vond nergens verwijzingen naar de moeilijkheden die zich in de praktijk kunnen voordoen tijdens het gebruik. Dit materiaal zal worden besteed aan de behandeling van een aantal van hen.

Kort over DML-statements (Insert)

Voordat we verder gaan, is het noodzakelijk opnieuw om meer details over het doel van elke functie op te roepen. We zullen twee operators geïnteresseerd bent in meer detail te hebben: Insert en Update, want het hangt af van hen af te leiden van de grootste problemen bij het verwerken van grote hoeveelheden data.

Je moet beginnen met het commando Invoegen en dan geleidelijk te verplaatsen naar de Update. MySQL-systeem, net als elke andere moderne database, gebruik maken van de operatie Invoegen om nieuwe records aan bestaande tabellen toevoegen database. De syntaxis van deze operatie is zeer eenvoudig en ongecompliceerd. Het bevat een overzicht van velden die zal worden gedaan om de waarden, de bestemming - de naam van de tafel - en meteen een lijst met gegevens ingevoerd. Elke keer dat u de database invoegen uit te voeren zal worden bijgewerkt met nieuwe waarden.

verklaring bijwerken

Echter, in de praktijk heel vaak zijn er situaties dat voor sommige reeks gegevens een of meer attribuutwaarden worden bijgewerkt. Als voorbeeld van een situatie waarin het bedrijf was hervorming met verdere hernoemen van de belangrijkste afdelingen. In dit geval is het noodzakelijk om wijzigingen voor elke afdeling te maken. Als alleen de naam verandert, dan is het probleem kan zeer snel worden opgelost. Wanneer echter het veranderen van de codering van elke component van de gehele productie, dat gewoonlijk fungeert als de primaire sleutel, die op zijn beurt betekent veranderingen van de informatie en voor elke werknemer.

Update - DML-operator kan worden toegepast om dit probleem op te lossen. MySQL- server, werkend met een groot aantal inzendingen, met de hulp van een update statement, voert u de gewenste vraag en het probleem oplossen. Maar soms optreden tijdens de update is niet helemaal duidelijk en moeilijk om de complexiteit te verklaren. Dat is wat de oorzaak van het probleem records bijgewerkt, zal verder worden besproken.

Wat weinig gezegd in theorie ...

Update-Team, zoals hierboven vermeld, wordt gebruikt om bestaande records in de tabel bij te werken. Maar in de praktijk, klanten toegang tot de database servers zijn niet altijd bekend zijn, is er een bepaalde set van gegevens in de tabellen of niet. Voorlopige de beschikbaarheid van de gegevens in de database voor de latere bijwerking van de resultaten in tijdrovende en verspilling van server mogelijkheden.

Om dit te voorkomen, in een afzonderlijk bestand MySQL structuur - Vul * update, waarbij het inzetstuk of update kan worden onafhankelijk van elkaar uitgevoerd. Dat is wanneer de tafel heeft een ingang voor een bepaalde aandoening, zal worden bijgewerkt. Indien de beoogde voorwaarden, worden de gegevens niet worden gevonden, MySQL-server is in staat om data uploads verzoek te doen.

gegevens bijwerken wanneer er duplicaten

Een belangrijk onderdeel van deze Insert - verzoek aan de MySQL database management system - «Op dubbele sleutel-update» prefix. De volledige syntaxis van de query is als volgt: «invoegen in test_table (employer_id, naam) waarden ( 1, 'Abramov') op dubbele sleutel -update LAST_MODIFIED = NU (); ".

Een dergelijk verzoek kan worden gebruikt om de acties van opname, bijvoorbeeld Bepaal de snijpunten passagetijd onderneming gevolgd door het tellen tijdinterval en detectievertragingstijden. Om te voorkomen dat de tafel een paar platen, genoeg voor elke werknemer om records met voortdurende actualisering te houden te maken. Het is een dubbele check ontwerp maakt het mogelijk.

Eigenlijk problemen ...

Gezien het bovenstaande voorbeeld van de registratie personeel actie bij de ingang, want het probleem is het gebruik samouvelichivayuschihsya (auto _ increment) velden, die doorgaans worden gebruikt om de primaire sleutel waarden in te vullen (primaire _ toets). Als u gebruik maakt van MySQL command-update in design met Insert auto _ increment, wordt het veld steeds groter.

Op dezelfde manier, alles gebeurt bij het gebruik van een vervangende constructie in het geval van dubbele detectie. "Auto-increment" waarde wordt verhoogd, zelfs in het geval waar het niet nodig is. Hierdoor problemen overloop door waarden of bereiken, die vervolgens leiden tot storing van databasebeheersystemen.

Meest waarschijnlijk het probleem

Beschrijft het probleem moet worden beschouwd als Web-ontwikkelaars, want het is het meest voor bij systemen met meerdere gebruikers (websites, portals, en ga zo maar door. P.), Als het systeem een groot aantal procedures Insert wordt uitgevoerd en bijwerken MySQL.

PHP - oproep aan de basis heel vaak uitgevoerd. Daarom, om een maximale marges, gedefinieerd als AUTO_INCREMENT bereiken, treedt snel op, en in de analyse van de problemen vast te stellen van de redenen zal gewoon niet werken.

Daarom zijn ontwikkelaars aangemoedigd aandacht voor het gebruik van het ontwerp op dubbele sleutel in opdracht mysql-update te zijn. Selecteer - vragen bij de toegang tot de database server zal werken zonder fout, maar de toevoeging van nieuwe records aan de database is beladen met vervelende situaties in de toekomst leiden tot ernstige problemen. Als alternatief, is het raadzaam voor de auto-increment velden in eerste instantie te controleren op hun platen, en houd ze bijgewerkt.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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