Vždyť jsem psal, že "je nutné jednoduchý příklad chápat obecněji". Co třeba takovýto kód ukládající počet přístupů po vteřinách:
<?php $cas = date("Y-m-d H:i:s"); if (mysql_result(mysql_query("SELECT COUNT(*) FROM pristupy WHERE cas = '$cas'"), 0)) { mysql_query("UPDATE pristupy SET pocet = pocet + 1 WHERE cas = '$cas'"); } else { mysql_query("INSERT INTO pristupy (cas, pocet) VALUES ('$cas', 1)"); } ?>
Pokud je nad sloupcem (cas) unikátní klíč, tak se spousta přístupů neuloží, pokud ne, tak cas bude obsahovat duplicitní hodnoty.
O smysluplnost tohoto příkladu teď nejde - jde o to, že je potřeba o riziku vědět a kód psát podle toho.
A není v článku uvedeno "MySQL [transakce] však umožňuje pouze za určitých okolností"? Všimněte si prosím hlavně odkazu na relevantní část MySQL dokumentace. Nepřijde mi to jako přehlížení.
Urážet umíte nádherně ó pane geniální programátore.
Možná jste i jakýsi slavný hacker, když jste o každém přispěvovateli zjistil tolik informací, klaním se Vám uctivě, množství odhalení v jednom příspěvku je až ohromující.
Děkuji že jste mě upozornil, že tento článek není ani pro začátečníky, ani pro rádoby-programátory, kdybych to vědel předem, ani bych to nečetl, natož plýtval čas diskusí. Běžím si radši vylít zlost do jiného fóru, zase mi spadly Windows!
Už se těším na příval odborně napsaných aplikací s geniální databází MySQL, které budou psané systémem LOCK TABLES příkazy příkazy UNLOCK TABLES, slibuji že se k nim budu třikrát denně modlit.
Také se těším na další pokračování článku s názvem "Jak zajistit konzistenci dat bez transakcí", kde nám autor vysvětlí, že ten jediný správný způsob (r) je takto:
while (!end) // atomicita operace!! end = true; error = INSERT INTO table1... error1 = INSERT INTO table2.... if (error || error1) { // error -> rollback DELETE FROM table1.. DELETE FROM table2.. end = false; // try again } }