DatorerDatabaser

"Fallgropar" DML-Team Update MySQL

Varje programmerare, som var tvungen att arbeta med databaser, inför DML-operatörer (översatt från engelska - .. "Data Manipulation Language"), såsom Select, Insert, Delete och Update. MySQL-transport använder också sin arsenal av alla ovanstående kommandon.

Dessa uttalanden är logiskt att prata om hans utnämning - välja poster, infoga nya värden, uppdatera befintliga data, komplett eller i enlighet med de angivna villkoren, avlägsnande av informationen i databasen. De teoretiska utbildningsmaterial beskrivs i detalj principen för driften av varje kommando och deras syntax, men ingenstans finns hänvisningar till de svårigheter som kan uppstå i praktiken under användning. Detta material kommer att ägnas åt prövningen av några av dem.

Kort om DML-uttalanden (Insert)

Innan vi går vidare, är det nödvändigt att återigen påminna om mer information om syftet med varje funktion. Vi kommer att ha två aktörer som är intresserade mer i detalj: Insert och Update, eftersom det beror på dem härleda de största svårigheterna i att hantera stora mängder data.

Du måste börja med kommandot Infoga och sedan gradvis flytta till Update. MySQL-system, precis som alla andra moderna databas använder Infoga operation för att lägga till nya poster i befintliga tabeller databas. Syntaxen för denna operation är mycket enkel och okomplicerad. Den innehåller en lista över områden som kommer att göras till de värden, destination - namnet på bordet - och omedelbart införde en lista med data. Varje gång du utför Infoga databas kommer att uppdateras med nya värden.

Update uttalande

Men i praktiken ganska ofta det finns situationer som av någon datamängd en eller flera attributvärden som ska uppdateras. Som ett exempel, en situation där företaget var reformen med ytterligare döpa av de viktigaste avdelningarna. I detta fall är det nödvändigt att göra förändringar för varje avdelning. Om bara ändra namnet, då problemet kan lösas mycket snabbt. Om emellertid ändra kodningen av varje komponent av hela produktionen, som vanligtvis tjänar som den primära nyckeln, som är i sin tur medför förändringar av den information och för varje anställd.

Update - DML-operatören kan användas för att lösa detta problem. MySQL- server, som arbetar med ett stort antal poster, med hjälp av en uppdatering uttalande verkställa erforderliga frågan och lösa problemet. Men ibland uppstår under uppdateringen är inte helt klart och svårt att förklara komplexitet. Det är vad som orsakar svårigheten att uppdaterade poster, kommer att diskuteras vidare.

Det lilla som sagts i teorin ...

Update Team, som nämnts ovan, används för att uppdatera befintliga poster i tabellen. Men i praktiken, klienter åtkomst databasservrar inte alltid kända, det finns en viss uppsättning data i tabellerna eller inte. Preliminär kontrollera tillgängligheten för data i databasen för efterföljande uppdatering av resultaten i tidskrävande och slöseri med serverfunktioner.

För att undvika detta i en särskild databas MySQL struktur - Insert * Update, där insatsen eller uppdatera kan utföras oberoende av varandra. Det är då bordet har en post för ett särskilt tillstånd, kommer att uppdateras. Om villkoren anses data kommer inte hittas, är MySQL-server kan utföra uppgifter inlagda begäran.

Uppdatera data när det finns dubbletter

En viktig komponent i detta Insert - begäran till MySQL-databas ledningssystem - «On Duplicate Key Update» prefix. Hela syntaxen av frågan är som följer: «infoga i test_table (employer_id, namn) värden ( 1, 'Abramov') på dubbla nyckel uppdatering last_modified = NU (); ".

En sådan begäran, kan användas för att spela in de åtgärder av, till exempel, fastställa vilken skärningspassagetiden företag följt av räkning tidsintervall och fördröjningsdetektering. För att inte göra tabellen några poster, tillräckligt för varje anställd att föra register med ständig uppdatering. Det är en dubblett check konstruktion gör det.

Egentligen problem ...

Med tanke på ovanstående exempel av registrerings personal verkan vid ingången, eftersom problemet är användningen samouvelichivayuschihsya (auto _ öka) fält, vilka typiskt används för att fylla de primära nyckelvärden (primär _ nyckel). Om du använder MySQL Update kommando i design med Insert auto _ ökning är fältet ökar ständigt.

Likaså händer allt när man använder en ersättningsbyggnationen i fallet med dubbla upptäckt. värde "Auto-ökning" ökas även i de fall där det inte behövs. På grund av detta problem uppstår overflow pass värden eller intervall som sedan leder till fel i databassystem.

Troligtvis problemet

Beskriver problemet måste beaktas webbutvecklare, eftersom det är vanligast i fleranvändarsystem (webbplatser, portaler och så vidare. P.), När systemet körs ett stort antal förfaranden Insert och uppdatera MySQL.

PHP - vädjan till basen ofta utförs. För att uppnå maximal marginaler, definierade som AUTO_INCREMENT, sker snabbt och i analysen av de svårigheter att fastställa orsakerna bara inte kommer att fungera.

Därför utvecklare uppmuntras att vara uppmärksam på användningen av designen på dubblettnyckel kommandot mysql uppdatering. välj - frågor vid åtkomst databasservern kommer att fungera utan fel, men tillägg av nya poster i databasen är fylld med obehagliga situationer i framtiden leda till allvarliga problem. Alternativt är det rekommenderas för automatisk Tillväxt fält initialt kontrollera sina register, och sedan hålla dem uppdaterade.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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