"Подводен камък" DML Актуализиращ екип за MySQL

Всеки програмист, който е трябвало да работи с бази данни, се е сблъскал с DML оператори (език за манипулиране на данни) като Select, Insert, Delete и Update. В средата на MySQL също се използват всички горепосочени команди в своя арсенал. Тези оператори логично казват за своята дестинация - избор на записи, вмъкване на нови стойности, актуализиране на съществуващи данни, пълна или според определените условия премахване на информацията в базата данни. Теоретичните материали на обучението описват подробно принципа на работата на всеки отбор и техния синтаксис, но няма къде да се намери спомена за трудности, които могат да възникнат на практика, когато се използват. Този материал ще бъде посветен на разглеждане на някои от тях.


Накратко за операторите на DML (Вмъкване)

Преди да продължите, е необходимо да се припомни още веднъж подробно за целта на всяка функция. Ще бъдем по-заинтересовани от два оператора: Insert и Update, тъй като те са основните трудности при обработката на големи обеми от данни.
Започнете с командата Вмъкни и след това преминете към Актуализация. MySQL, както и всяка друга съвременна СУБД, използва операцията Insert, за да добавя нови записи към съществуващи таблици на базата данни. Синтаксисът на операцията е много прост и разбираем. Той съдържа списък с полета, в които ще бъде въведена стойността, дестинацията - името на таблицата - и списъка с въведените данни директно. Всеки път, когато се изпълни командата Insert, базата данни ще бъдепопълнени с нови стойности.


Оператор за актуализиране

На практика обаче често се случват ситуации, при които някои данни трябва да бъдат актуализирани до една или повече стойности на атрибути. Като пример може да се посочи ситуацията, когато компанията претърпява реформа с последващото преименуване на основните отдели. В този случай трябва да направите промени за всеки отдел. Ако само имената се променят, проблемът се решава много бързо. Но ако кодирането на всеки компонент на цялото производство, което обикновено служи като първичен ключ, се променя, то това, от своя страна, предизвиква промени в информацията и на всеки служител.
За решаването на този проблем може да се използва DML оператор-Update. MySQL е сървър, работещ с голям брой записи, използващ оператора за обновяване, ще изпълни необходимата заявка и ще реши проблема. Но понякога по време на ъпгрейда има не съвсем разбираеми и трудно разбираеми сложности. Става дума за трудността да се актуализират записите, езикът ще продължи.

Какво се казва в теорията

Командата Update, както е споменато по-горе, се използва за актуализиране на съществуващите записи в таблицата. На практика обаче клиентите, които имат достъп до сървъри на бази данни, не винаги са наясно дали има специфичен набор от данни в таблиците или не. Предварителната проверка на наличието на данни в базата данни за по-нататъшно опресняване води до времеви разходи и загуба на сървърни възможности. За да не се случи това, СУБД има специален дизайн на MySQL - Insert * Update, вкои вмъкване или актуализация могат да се извършват независимо един от друг. Тоест, когато има запис в таблицата за определено условие, ще се появи актуализация. Ако данните при това условие не бъдат намерени, MySQL сървърът ще може да попълни заявката за данни.

Актуализиране на данните в присъствието на дубликати

Важен компонент на такива заявки за въвеждане - в системата за управление на бази данни MySQL - префиксът „On Duplicate Key Update“. Пълният синтаксис на заявката изглежда така: "вмъкни в test_table (employer_id, name) стойности (1'Abramov ') е дублиращ се ключ update_modified = NOW (); ".
Такава заявка може да се използва за регистриране на действия на служителите, например за определяне на времето на пресичане на транзитното дружество с последващото изчисляване на времето на прекъсване и откриването на закъснения. За да не се включват няколко записа в таблицата, достатъчно е всеки служител да поддържа сметка с постоянно актуализиране. Това е дизайнът на дублиращата проверка, която ви позволява да направите това.

Всъщност за проблемите

Като се има предвид горния пример за регистриране на действията на служителите в прохода, като проблем, можем да използваме полетата auto_ increment, които обикновено се използват за попълване на стойностите на първичните ключове (първичен ключ). Когато използвате командата MySQL Update в конструкцията с Insert auto_ increment, полетата непрекъснато се увеличават. По същия начин, всичко се случва, когато се използва заместващ дизайн, ако се открият дубликати. Стойността "Auto-incremental" се увеличава дори когато няма нужда от нея. Поради това има проблеми с проходастойности или преливане на обхвата, което в бъдеще води до прекъсване на работата на системите за управление на база данни.

Най-голямата вероятност за възникване на проблем

Проблемът трябва да се разглежда от Web-разработчиците, тъй като той се използва най-често в многопотребителски системи (интернет сайтове, портали и др.), Когато системата изпълнява голям брой процедури за вмъкване и актуализиране на MySQL.
PHP-достъпът до базата данни се извършва много често. Следователно постигането на максималните стойности на полетата, причинени от auto_increment, е бързо и при анализиране на трудностите не е възможно да се определят причините незабавно.
Затова се препоръчва разработчиците да подхождат внимателно към използването на дизайна на дублирания ключ в командата mysql update. select - заявки при достъп до сървъра на базата данни ще работят без грешки, но добавянето на нови записи в базата данни е застрашено от неприятни ситуации, допълнително води до сериозни проблеми. Като алтернатива се препоръчва за автоматично инкрементиране полета първо да проверите наличността на записи за тях, и след това да ги актуализира.

Свързани публикации