Transakce MySQL

Napsáno: 22.04.2013    


Kategorie: PC  -  MySQL





Transakce ve světě databází, a nejen tam, slouží k zpracování sekvence příkazů jako celku. Pokud se některý z příkazů neprovede je možné celou poslopnost zrušit a vrátit se do počátečního stavu. Názornou ukázkou budiž například úprava programu. Uděláme kopii souboru, provedeme rozličné úpravy a pokud se úpravy nepovedou vrátíme se opět k originálu.
Výhody transakcí jsou tedy zřejmé.Ale ne vždy jsou tyto operace vhodné a žádoucí. Typycké použití a velmi žádoucí je vkládání více položek do databáze. Například operace INSERT INTO tab1 SELECT FROM tab2 .... Transakce nám zaručí vložení všech záznamů případně neprovedení žádného. Mohlo by totiž dojít k mezi stavu, kdy některé operace byly provedeny a některé nikoli. U tabulek s pár záznamy jsme schopni provést kontrolu sami. U stotisícových už většinou nikoliv. Transakce jsou však někdy používany ve spojitosti sPHP zbytečné a celkově komplikují provádění samotného kódů. Někdy jsou naopak při stejné situace nezbytné. Následuje ukázka.

$sql="START TRANSACTION";
$vysledek=MySQL_Query($sql);
$sql="DELETE FROM tabulka WHERE podmínka";
$vysledek=MySQL_Query($sql);
if ($vysledek) { //jak dopadly transakce ?
$sql="COMMIT";//potvrdíme pokud je vše v pořádku
$vysledek=MySQL_Query($sql);
}
else {
$sql="ROLLBACK"; //vrátíme vše zpět pokud neproběhly
$vysledek=MySQL_Query($sql);
}

Zde bych rád upozornil právě na jedno úskalí. Jednak se musí kontrolovat jak transakce proběhla a případně potvrdit. Až sem vše jistě v pořádku. Zůstává však otázka co budeme dělat dále. Byla tato kostrukce potřebná ? Možná. Třeba by stačilo jen upozornit na skutečnost že ne vše se povedlo. Pokud příkaz smazal jen některé záznamy a něco zůstalo dále v databázi se nechá zpracovat i jinak. Možná bude stejně potřeba celou operaci zopakovat a kontaktovat programátora. Možná bude potřeba při chybě zastavit program. Možná je vhodné aby správce zjistil příčinu a celou aplikaci upravil. Případně bude nutné ošetřit ještě poslední podmínku odeslání či zamítnutí transakce. Záleží na situaci. Takže na jednu stranu se vrátíte do původního stavu na druhou znepřehledníte kód. Rozhodnutí je na vás.









Diskuze ke článku
( Celkem: 0 )
Jméno:   
E-mail:   
Vzkaz: 
Aktivní odkaz přidáte takto:
link[http://www.adresa.cz]
Antispam:   
   



 
 
Zatím není vložen žádný komentář.
 
 

2013 © PiDi Soft |  Mapa stránek |  Odkazy