tabulkovy ciselnik

Oto Buchta tapik na buchtovi.cz
Středa Červen 18 13:58:00 CEST 2008


On Wed, Jun 18, 2008 at 12:29:01PM +0200, Ivan Polak wrote:
> Zdravim konferenciu,
> 
> mam aplikaciu kde pouzivam Spring a Hibernate. zakaznik si ale okrem
> klasickeho id-cka zo sequenceru chce cislovat zaznamy v DB specialnym
> ciselnikom z tabulky. teda je tabulka (ma jeden stlpec) kde je zapisane
> posledne volne cislo. toto cislo potrebujem zobrat (select do DB) a nasledne
> ho inkrementovat o 1 (zapis do DB). to cislo ktore som zobral priradim
> dokumentu. toto potrebujem spravit ako jednu operaciu aby nebolo mozne
> priradit toto cislo inemu dokumentu. neviete niekto poradit ako na to ?
 
Reseni je samozrejme jako vzdycky nekolik. Nejobecnejsi, ktere bude fungovat
vsude, je udelat onen jediny sloupecek one tabulky primarnim klicem
a potom sama DB zarve, ze se pokousis vlozit podruhe totez. Proste klasicky
DB optimisticky pristup. Pokud mas ale opravdu velice vysokou pravdepodobnost
obtizi, budes muset zamykat (idealne tu jednosloupcovou tabulku, ktera stejne
nema jiny vyznam nez jako ciselnik) a handlovat pripadne vyjimky na zamku.

Musim se priznat, ze by mne docela zajimalo, k cemu je to vlastne dobre.
Nestacilo by mit seqenci, z ni vytahnout cislo a ulozit to do one tabulky?
A nestaci vlastne jeden radek jedne tabulky? Tedy seqence? :-D

Hlavne by mne zajimalo, proc se zakaznik "rype" v takovych titernostech, jako
je zpusob generovani primarniho klice. Nebo ma strach, aby mu faktury sly
pekne po rade? To by mu pece melo stacit, ne? Navic to nemusi fungovat,
protoze kdyz on se rozhodne smazat "posledni" fakturu, tak mu tam muze pristat
dalsi a ulozit novy radek do ciselniku s novou hodnotou, takze stejne bude
muset precislovavat... 

Oto 'tapik' Buchta



Další informace o konferenci Konference