Mysql a "transakce"
Jan Kasprzak
kas na informatics.muni.cz
Úterý Srpen 17 17:39:22 CEST 1999
Zdravim,
mam databazi (Mysql) a potrebuji udelat nasledujici:
V jedne tabulce jsou zaznamy, ktere tam pridavaji ruzne procesy - kazdy
proces muze pridat jeden nebo vice zaznamu. A pak existuje dalsi
proces, ktery ty zaznamy cte, zpracovava a maze. Protoze na zaznamy v
teto tabulce jsou vazany dalsi veci (v jinych tabulkach a mimo databazi),
je potreba, aby proces "ctenar" zacal zpracovavat zaznamy od urciteho
"pisare" az v okamziku, kdy pisar zapise vsechny zaznamy, ktere potrebuje
zapsat.
Chtel bych se obejit bez zamykani tabulek (jedna moznost je,
ze pisar - pokud zapisuje vice nez jeden zaznam - si pred zacatkem zapisu
zamce tabulku WRITE, a po ukonceni odemce; tohle mi ale prijde
neefektivni).
Napadlo me, ze si do tabulky pridam dalsi sloupec - treba STAV,
a ctenar bude zpracovavat radky pouze s definovanym stavem (treba 'READY').
Timto ale problem nevyresim, protoze stejne po nainsertovani vsech zaznamu
jednim pisarem (se stavem jinym nez 'READY', treba 'ACTIVE'), musim tento
stav atomicky zmenit na 'READY'. A jsem tam, kde na zacatku, protoze
pisar muze vkladat opravdu velke mnozstvi zaznamu.
Dalsi iterace by byla, pokud by MySQL klient mel prirazene
nejake jednoznacne cislo v ramci systemu. Pak by melo byt mozne,
aby sloupec STAV byl ciselny, a klient by tam vkladal sve cislo.
Az by zapsal, co uzna za vhodne, dal by
UPDATE TABULKA SET STAV='-1' WHERE STAV='moje_cislo'
(kde "-1" by bylo nejake cislo, ktere nemuze byt pouzito jako cislo
klienta).
Existuje v MySQL nejake jednoznacne cislo klienta?
Existuje jine reseni?
-Yenya
--
\ Jan "Yenya" Kasprzak <kas at fi.muni.cz> http://www.fi.muni.cz/~kas/
\\ PGP: finger kas at aisa.fi.muni.cz 0D99A7FB206605D7 8B35FCDE05B18A5E //
\\\ Czech Linux Homepage: http://www.linux.cz/ ///
| The case with NT is the most spectacular. Seems, they have at least two |
| independant teams. One introduces bugs, another invents workarounds. |
| Silly bugs are followed by ugly workarounds. 8) --Alexey Kuznetsov |
Další informace o konferenci Databases