Hver programmør, der skulle arbejde med databaser, stod over for DML-operatører (om. fra engelsk - "data manipulation sprog") såsom Vælg, Indsæt, Slet og Opdatering. MySQL-miljøet bruger også alle de ovennævnte kommandoer i sit arsenal.
Disse operatører taler logisk om derestildeling - valg af poster, indsættelse af nye værdier, opdatering af eksisterende data, komplet eller i henhold til specificerede forhold, sletning af information i databasen. I de teoretiske træningsmaterialer beskrives funktionsprincippet for hver kommando og deres syntaks detaljeret, men intetsteds er der nogen omtale af vanskeligheder, der kan opstå i praksis under brug. Dette materiale vil blive brugt på at overveje nogle af dem.
Før du går videre, er det nødvendigt igen at minde mere detaljeret om formålet med hver af funktionerne. Vi vil være interesseret i to operatører mere detaljeret: Indsæt og Opdatering, da det er fra dem, at de største vanskeligheder opstår ved behandling af store mængder data.
Du skal starte med kommandoen Indsæt, og derefter gå glat til Opdatering. MySQL systemet, som enhver anden moderne DBMS, bruger operationen Indsæt for at tilføje nye poster til eksisterendedatabasetabeller. Syntaksen for denne operation er meget enkel og ligetil. Den indeholder en opregning af de felter, hvor værdierne skal indtastes, destinationen - navnet på tabellen - og selve listen over de indtastede data. Hver gang du kører kommandoen Indsæt databasen opdateres med nye værdier.
Men i praksis er der ganske oftesituationer, hvor det for nogle datasæt er nødvendigt at opdatere en eller flere attributværdier. Som et eksempel kan vi nævne situationen, hvor virksomheden gennemgik en reform med yderligere omdøbning af hovedafdelingerne. I dette tilfælde er det nødvendigt at foretage ændringer for hver afdeling. Hvis kun navnene ændres, løses problemet meget hurtigt. Men hvis kodningen af hver komponent i hele produktionen ændres, som som regel fungerer som en primær nøgle, medfører dette igen ændringer i information og for hver medarbejder.
For at løse det aktuelle problem kan man ansøge DML-operatør - Opdatering. MySQL-serveren, der fungerer med et stort antal poster,ved hjælp af opdateringserklæringen udfører den anmodede anmodning og løser problemet. Men nogle gange opstår der under opdateringen vanskeligheder, der ikke er helt klare og vanskelige at forklare. Det handler om vanskelighederne med at opdatere poster, der vil blive diskuteret nedenfor.
Opdateringskommandoen, som nævnt ovenfor,bruges til at opdatere eksisterende poster i en tabel. Men i praksis ved klienter, der har adgang til databaseservere, ikke altid, om der findes et bestemt datasæt i tabeller eller ej. Foreløbig kontrol af tilgængeligheden af data i databasen for efterfølgende opdateringer fører til tidsomkostninger og spildte serverfunktioner.
For at forhindre dette sker leverer DBMS et specielt design MySQL - Indsæt * Opdateringhvor en indsættelse eller opdatering kankøre uafhængigt af hinanden. Det vil sige, at når der er en post i tabellen for en bestemt tilstand, vil der opstå en opdatering. Hvis der ikke findes nogen data for den pågældende tilstand, kan MySQL-serveren udføre anmodningen om tilføjelsesdata.
En vigtig del af dette Indsæt-forespørgsel i databasestyringssystemet MySQL - "On Duplicate Key Update" præfiks. Den komplette syntaks for anmodningen er som følger: “indsæt i test_tabel (arbejdsgiver-id, navn) værdier (1, "Abramov") ved duplikatopdatering af sidste nøgle_modificeret = NU ();".
En sådan anmodning kan bruges tilregistrering af medarbejdernes handlinger, for eksempel at bestemme tidspunktet for krydsning af virksomhedens indgang med den efterfølgende beregning af pausetiden og identificere forsinkelser. For ikke at foretage flere poster i tabellen er det tilstrækkeligt at føre poster for hver medarbejder med konstant opdatering. Det er det dobbelte kontroldesign, der giver dig mulighed for at gøre dette.
I betragtning af ovenstående eksempel på registrering af medarbejdernes handlinger ved kontrolpunktet, er brugen af selvforøgelse (auto_stigning) felter, der typisk bruges til at udfylde primære nøgleværdier (primær_nøgle). Når du bruger kommandoen MySQL-opdatering i konstruktion med Indsæt auto_forøgelse, markerne øges konstant.
Tilsvarende sker alt nåren erstatningskonstruktion bruges, hvis der findes dubletter. Værdien "automatisk forøgelse" øges, selv når det ikke er nødvendigt. På grund af dette er der problemer med manglende værdier eller overfyldt et interval, som efterfølgende fører til funktionsfejl i databasestyringssystemer.
Det beskrevne problem skal overvejes Web-udviklere, da det er mest almindeligt i multibrugersystemer (websteder, portaler osv.), når der udføres et stort antal procedurer i systemet Indsæt og Opdater MySQL.
PHP-databasen åbnes meget ofte. Derfor er opnåelsen af den maksimale værdi med felterne defineret som auto_forøgelse, sker hurtigt, og når man analyserer de vanskeligheder, der er opstået, vil det ikke være muligt med det samme at fastslå årsagerne.
Derfor rådes udviklere til nøje at benytte brugen af strukturen på duplikatnøgle i et hold mysql opdatering. Vælg - forespørgsler, når du får adgang til databaseserverenfungerer uden fejl, men tilføjelse af nye poster til databasen er fyldt med ubehagelige situationer, som efterfølgende fører til alvorlige problemer. Alternativt anbefales det, at felter med automatisk stigning først kontrollerer for eksistensen af poster for dem og derefter opdaterer dem.