Autor Zpráva
pete650
Profil *
Uz se to tu min. jednou resilo, ale nemuzu to zaboha najit, tak se omlouvam. Mam nejake vyrobky ulozene v Mysql databazi a vypisuji jejich nazvy zalozene na id (aby byly na webu jednoznacne urcene). No a vzhledem k tomu, ze uzivatel vyrobky maze a zase pridava, tak id se pomalu zvetsuje a zvetsuje az bude nejvetsi..... a nebude to pekne a pritom tech vyrobku na webu zas tam moc najednou zobrazeno neni. Tak se ptam, jestli ma mysql nejakou funkci, ktera by "zredukovala" id zase pekne od zacatku od 1...., nebo jak by jste to resili pomoci php ?
Dik
Kcko
Profil
>> zvetsuje az bude nejvetsi.....

nejvetsi na svete? ;-)

Je to jedno, od tu DB je. Napis co presne chces resit, to jestli mas v DB vyrobek s ID 15 nebo 15350 je uplne jedno.
pete650
Profil *
Ja myslel, ze jsem to vysvetlil. Takze priklad. Mam vyrobek jmenem "Lesteny prd", ktery je v radku 1 a ma na zacatku plneni databaze hezke id 1 a tudiz se jmenuje "Lesteny prd 1", nasleduje "Lesteny prd 2" atd. atd... Postupem casu ale uzivatel vyrobky maze a nahrazuje je novymi a id vzrusta, protoze mysql drive smazane id neobnovi, takze se zanedlouho dostaneme k vyrobku "Lesetny prd 15350" a to se mi nelibi, vzhledem k tomu, ze na celem webu bude tech Lestenych prdu max. 100. A predstavoval bych si nejakou fci mysql, ktera ty id projede, a udela z nich zase radu od 1cky. Samozrejme by to slo udelat tak, ze ke kazdemu vyrobku prradim jeste jednu polozku TINYINT, kterou si budu plnit sam na zaklade zjistenych jiz zadanych vyrobku. Ale proc to delat, kdyz uz to tak hezky splnuje id ? (az na ty narustajici cisla).
tiso
Profil
pete650 - toto som nikdy nechápal načo to môže byť niekomu dobré...
Hugo
Profil
pete650

To co požaduješ je dost nebezpečná věc. Předpokládám, že id je primární klíč, který by měl jednoznačně identifikovat daný prvek. Pokud vytvoříš skript, který jednou za čas projede celou tabulku a přečísluje id, tak hrozí reálné nebezpečí, že dojde ke konfliktu s jiíným procesem (např. mazání položky). Navíc všechny seznamy, statistiky apod., které byly vegenerovány před přečíslováním budou neplatné, atd. Jeden ze základních požadavků na primární klíč je jeho neměnnost.

To přečíslování se dá realizovat poměrně snadno. Jedna z možností je přesunutí dat do jiné tabulky, vyprázdnění půvopdní tabulky a nasypání dat zpět, ale bez ID. ID si vygeneruje MySQL sama. Ovšem silně to nedoporučuju.
pete650
Profil *
Dekuji Vsem za nazor. Udelam to tedy asi jinak. I kdyz ten prevod mezi tabulkami a zpet me laka.. :)
Toto téma je uzamčeno. Odpověď nelze zaslat.