ugrás a tartalomhoz

Az első nem használt azonosító kikeresése

Anonymous · 2005. Okt. 12. (Sze), 22.03
Ki hogy oldja meg ezt?

Tehát a kötvetkező lenne a feladat: van egy tábla ahol az elsődleges kulcs mező auto increment. Ha törlünk a táblából majd újból felviszünk adatot akkor nem az üres helyre teszi be az új sort hanem a maximális kulcsmező azonosítóját növeli egyel. Nade mivan ha én előre akarok tervezni, és előre láthatólag rengeteg sor lesz ebben a táblában és ki akarnám használni az üresedő helyeket?

Sajnos nem tudok olyan utasítást ami az első nem létező mező azonosítóját adná vissza :) ígyhát maradnak a trükkök. Nekem két ötletem van.

Első: szépen 1-től egyesével megnézni hogy van e azon az azonosíton adat a táblában. Első üres eredmény lenne a kívánt új azonosító. Ez elég erőforrás igényesnek tűnik. Sok adatnál ki tudja mikor lesz az első "lyuk".

Második: az adatokat nem ténylegesen törölni a táblában, hanem egy speciális szöveget megadni a törlendő rekord egyik mezőjének és új adat felvitelekor az első ilyen szövegre rákeresni. Ez talán jobb megoldásnak tűnik.

Más ötlet esetleg?
 
1

MySQL ezt csinálja

Jano · 2005. Okt. 12. (Sze), 22.38
A MySQL is valalami ilyesmit csinál magától is. Ha törölsz egy sort és beillesztesz azt akár be is rakhatja a törölt helyére, így a táblázat tárolási sorrendje és az auto-increment-es id-k sorrendje el fog térni. De igazából ez neked lényegtelen kéne, hogy legyen. Vagy attól félsz, hogy elfogynak az ID-k? Használj nagyobb számot.
2

<Nincs cím>

Barkóczi Roland · 2005. Okt. 13. (Cs), 00.16
Ne autoincrementes mezot hasznalj, hanem mondjuk egy 10-20 karakter hosszu alfanumerikus azonositot. biztos, hogy nem fog elfogyni.

En igy csinalom az user regisztraciot:
ha uj sort kell beszurni, akkor veletlenszeruen eloallitok egy 10 karakter hosszu azonositot, megnezem, hogy van e mar ilyen azonosito, ha van, akkor generaltatok egy masikat, egeszen addig, amig nincs még ilyen azonosito a tablaban. Sok elonye van szerintem a nem autoincrementes azonositoknak.
3

<Nincs cím>

toro · 2005. Okt. 13. (Cs), 08.43
En nem ismerem melysegeben az adatbazis kezelok keresesi metodusait, de altalanos tanulmanyaimra hivatkozva igen meg lennek lepve, ha erdemben befolyasolna a kereses sebesseget az, hogy "lyukak" vannak kulcsokban.
PL. egy sorbarendezett szamhalmazon "felezeses" algoritmussal '2^n' elem kozul 'n' lepesben kivalaszthatjuk a keresett erteket, fuggetlenul attol, hogy az elemek egymast kovetoek-e.
En nem fecserelnek energiat a lukak tomkodesere.