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