Ciselna rada po uzivatele

Zdenek Bohm zdenek.bohm na gammarus.cz
Středa Prosinec 17 13:37:56 CET 2003


> Zkuste napsat vic, netusim jakou mate databazi, co chcete delat s temi 
> cisli. Obecne by se to mohlo vyresit asi takto
> 
> BEGIN
>   SELECT cislo FROM tab WHERE id=neco FOR UPDATE;
>   ......
>   ......
>   UPDATE tab SET cislo = CISLO + 1 WHERE id=neco;
> COMMIT;

Pardon, mel jsem se vic rozepsat. Cele to bezi na MySQL. Vyse zmineny 
postup s vyselektovanim posledniho cisla, jeho inkrementovanim a 
naslednym pridanim zaznamu me taky napadl. Ale rad bych to prave takto 
neudelal.
Jde o tabulku do niz se ukladaji hlavicky objednavek - uzivatel jehoz 
udaje jsou ulozeny v jine tabulce svazane s touto pres ID_Uzivatel si 
neco objedna a do teto tabulky je ulozen zaznam, ze to byl on, kdy to 
udelal atd. a krome toho, pro dohledani je teto objednavce prirazeno cislo.
Nejjednoduseji to samozrejme jde udelat tak, ze sloupec Cislo se 
nadefinuje jako AUTO_INCREMENT a pak kdyz vlozim do tabulky dalsi zaznam 
, automaticky se ji priradi dalsi cislo v poradi. Ovsem za situace, kdy 
chronologicky objedna uzivatel s ID=1, pak uzivatel s ID=2 a pak zase 
ten s ID=1 bude vysledek ten, ze uzivatel s ID=1 bude mit objednavky 
cislo 1 a 3 a uzivatel s ID=2 bude mit objednavku s cislem 2. Ja bych 
prave rad docilil stavu, kdy kazdy uzivatel by mel vlastni neprerusenou 
ciselnou radu objednavek. Proste aby patnacta objednavka uzivatele 1 
mela cislo 15 bez ohledu na to, kolik jinych uzivatelu mezitim objednalo.
A docela by se mi hodilo, pokud by to slo udelat jen prostrednictvi 
jednoho INSERTU do vhodne nadefinovane tabulky (neco jako AUTO_INCREMENT 
jehoz "nejblizsi volnou" hodnotu ovlivnuje take obsah sloupce 
ID_Uzivatel). Bohuzel me nenapadlo (ani jsem nikde nenasel), jak by to 
slo zaridit (jestli vubec...), proto se ptam.

S pozdravem Zdenek Bohm



Další informace o konferenci Test