Свойства на транзакциите
Транзакции, често известни с термина КИСЕЛИНА, имат четири основни общи свойства.
- Атомност: Това гарантира, че всички задачи в работната единица ще бъдат изпълнени успешно; в противен случай, точно в точката на отказ, процесът се прекратява и предишните процеси се възстановяват в старото си състояние.
- Консистенция: Това означава, че при достатъчно ангажиран процес базата данни се актуализира по подходящ начин.
- Изолация: Той помага на транзакциите да работят помежду си и индивидуално и прозрачно.
- Трайност: Това гарантира, че в случай на повреда на системата, резултатът или последицата от извършена транзакция се запазват.
Работа на MySQL транзакции:
В рамките на MySQL, двата термина, ангажиране и връщане назад се използват предимно само за MySQL транзакции. Транзакциите започват само с BEGIN WORK декларация и завършват или чрез COMMIT декларация или ROLLBACK декларация. Инструкциите за SQL включват по-голямата част от транзакцията както между началните, така и със спиращите оператори. Такива серии от събития са независимо от използвания специфичен език за програмиране. Ще направите подходящ път на който и да е език, който използвате за изграждане на приложението. SQL операторите по-долу могат да бъдат внедрени с помощта на функцията mysql query ().
- НАЧАЛО: Стартирайте процеса или транзакцията си, като предоставите инструкцията BEGIN WORK SQL.
- Добавете SQL COMMAND: един или дори повече SQL изрази като съответно SELECT, INSERT, UPDATE и DELETE. Потвърдете, дори ако няма грешка и всичко е в съответствие с вашите очаквания.
- АНГАЖИРАНЕ: Инструкцията COMMIT трябва да бъде наложена след извършване на успешна транзакция, така че модификациите на всички свързани таблици да могат да влязат в пълен ефект.
- ВРЪЩАНЕ: Ако възникне неизправност, наистина е подходящо да се изпрати инструкция ROLLBACK за връщане на всяка таблица, посочена в транзакцията, към предишното й състояние.
- АВТОКОММИТ: По подразбиране MySQL прилага модификациите за постоянно към база данни. Ако AUTOCOMMIT е зададен на 1 (стандартен), тогава всяка SQL заявка (независимо дали е в транзакция) се приема за завършена транзакция и се ангажира, докато не бъде завършена по подразбиране. За да избегнете автоматичното фиксиране, задайте AUTOCOMMIT на 0.
Пример 01: Включен режим AutoCommit:
MySQL работи с фаза Autocommit, разрешена по подразбиране. Той гарантира, че MySQL запазва промените на диска, за да го създава постоянно, стига да изпълним заявка, която коригира (променя) таблица. Не е необходимо да върнете хода назад. Нека опитаме с AUTOCOMMIT on mode. Отворете черупката на командния ред на MySQL и въведете паролата си, за да започнете.
Вземете пример за таблица „книга“, която е създадена в база данни „данни“. В момента все още не сме извършили никаква заявка по него.
>> ИЗБЕРЕТЕ * ОТ данни.Книга;
Стъпка 2: Този процес е за актуализиране на таблицата „книга“. Нека актуализираме стойността на колона „Автор“, където „Името“ на книгата е „Начало“. Можете да видите, че промените са направени успешно.
>> АКТУАЛИЗИРАНЕ на данните.book SET Автор = 'Cristian Steward' WHERE Name = 'Home';
Като погледнем актуализираната таблица, имаме модифицирана стойност на автора, където „name“ е „Home“.
>> ИЗБЕРЕТЕ * ОТ данни.Книга;
Нека използваме командата ROLLBACK, за да върнем промените, като просто добавим заявката по-долу. Можете да видите, че ROLLBACK заявката не работи тук, тъй като показва, че „0 засегнати реда“.
>> ВРЪЩАНЕ;
Можете дори да видите таблицата. Досега таблицата няма промени след изпълнението на оператора ROLLBACK. Това означава, че ROLLBACK не работи, когато по подразбиране сме включили AUTOCOMMIT.
>> ИЗБЕРЕТЕ * ОТ данни.Книга;
Пример 02: Изключен режим AutoCommit:
За да върнем направените промени, нека опитаме с изключен режим AUTOCOMMIT. Използвайки същия пример за таблица „книга“, ще извършим някои промени върху нея. Ще използваме декларацията START TRANSACTION, за да деактивираме фазата на автоматичното фиксиране или просто напишете командата по-долу, за да изключите AUTOCOMMIT.
>> ЗАДАВАНЕ НА АВТОКОММИТ = 0;Да приемем, че имаме една и съща таблица „книга“ в нашата база данни и трябва да направим промени в нея. След това върнете отново тези промени към старите.
>> ИЗБЕРЕТЕ * ОТ данни.Книга;
Ако не сте изключили режима AUTOCOMMIT, тогава започнете със заявка START TRANSACTION в обвивката на командния ред, както е показано по-долу.
>> СТАРТИРАНЕ НА СДЕЛКАТА;
Ще актуализираме същата таблица, като използваме командата UPDATE, като зададем „Автор“ като „Алиана“, където „Името“ на книгата е „Мечта“. Направете го, като използвате командата по-долу. Ще видите, че промените ще бъдат направени успешно и ефективно.
>> АКТУАЛИЗИРАНЕ на данните.book SET Autho = 'Aliana' WHERE Name = 'Dream';
Нека проверим дали горната заявка е работила перфектно и е направила промени в таблицата или не. Можете да проверите актуализираната таблица, като използвате командата SELECT по-долу, както винаги.
>> ИЗБЕРЕТЕ * ОТ данни.Книга;Можете да видите, че заявката работи отлично, както е показано по-долу.
Сега е ред на командата ROLLBACK да изпълнява функцията си. Опитайте командата ROLLBACK във вашия команден ред, за да върнете скорошната актуализация в таблицата.
>> ВРЪЩАНЕ;
Нека проверим дали ROLLBACK заявката е работила, както трябва да работи или не. За целта трябва да проверите таблицата „book“ отново, като използвате командата „SELECT“, както винаги.
>> ИЗБЕРЕТЕ * ОТ данни.Книга;Можете да видите от изхода по-долу, че ROLLBACK най-накрая е работил. Той върна промените, направени от UPDATE заявката в тази таблица.
Заключение:
Това е всичко за MySQL транзакции. Надявам се това ръководство да ви помогне да извършвате удобно MySQL транзакции.