Sziasztok!
Egy táblában van autoincrement mező. Törölni kellett a táblából, ezért lyuk keletkezett. Meg lehet oldani, hogy újragenerálódjon ez a mező?
Köszönettel:
Gábor
- 2021 megtekintés
Hozzászólások
Ha a végéről töröltél,akkor egy ALTER TABLE táblanév AUTO_INCREMENT=1 megoldja, ha viszont közben van(nak) lukak, akkor azokat egyedileg tudod befoltozni.
Egyébként meg miért zavar, hogy nem folytonosak az értékek? Az autoincrement esetében nem a folytonos, hanem az egyedi érték a lényeg.
- A hozzászóláshoz be kell jelentkezni
Menet közben vannak a lyukak.
Egy véletlen szám alapján választok ki egy rekordot. Ha ez a szám éppen lyukra mutat, akkor nincs mit választani. A funkciója, hogy háttérképeket jelenít meg.
Gábor
- A hozzászóláshoz be kell jelentkezni
hat ezert kar az autoincrement (postgres alatt)
select kep from tabla order by random() limit 1;
- A hozzászóláshoz be kell jelentkezni
Akkor az oszlop eldob/újrarak jó lehet, de minden törlésnél eljátszadozni ezzel, hát... Én ilyen esetben a randomnál nem nagyobb id-k maximumát venném.
- A hozzászóláshoz be kell jelentkezni
Ez nem ad egyenlő esélyt a képeknek, ahol lyuk van, az többször jön ki.
- A hozzászóláshoz be kell jelentkezni
Ha a szám éppen lukra mutat, akkor egyszerűen növelni kell eggyel (vagy többel) addig, míg nem kapsz találatot.
- A hozzászóláshoz be kell jelentkezni
select akármi from valami order by rand() limit 1; ?
mennyi sor van a tábládba kb?
- A hozzászóláshoz be kell jelentkezni
:)
- A hozzászóláshoz be kell jelentkezni
Nem sok. Pár ezer csak.
De a Te javaslatod sokkal jobb az enyémnél.
Köszönöm.
- A hozzászóláshoz be kell jelentkezni
a kerdesre valaszolva, pl. eddobod az egesz oszlopot es ujra hozzaadod a tablahoz, valahogy igy:
ALTER TABLE `tabla_neve` DROP `id_mezo_neve` ;
ALTER TABLE `tabla_neve` ADD `id_mezo_neve` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST ;
- A hozzászóláshoz be kell jelentkezni
miért kell eldobni?
leveszed a pk-t, leveszed az autoincrement-et (vagy az azt okozó triggert), null-ozod (vagy nullázod), feltöltöd, vissza pk, autoincrement, ennyi.
bár nyilván fölösleges
- A hozzászóláshoz be kell jelentkezni
nekem egyszerubbnek tunik eldobni es ujra hozzaadni :)
- A hozzászóláshoz be kell jelentkezni
egyszerűbbnek egyszerűbb, csak jobban öli az adatbázist, ami komoly méretű táblánál nem ideális. Bár ott meg nem törölgetsz, hanem van egy erased mező, aztán azt bebillented ha törölve lett...
- A hozzászóláshoz be kell jelentkezni
"ALTER TABLE `tabla_neve` DROP `id_mezo_neve` ;
ALTER TABLE `tabla_neve` ADD `id_mezo_neve` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST ;"
Ez tökéletesen bevált. Elvétve lehet csak, hogy törölni kell a sorból.
Köszönöm:
Gábor
- A hozzászóláshoz be kell jelentkezni
sub
* Én egy indián vagyok. Minden indián hazudik.
- A hozzászóláshoz be kell jelentkezni
Szerintem első körben nézd meg, hogy mire is használjuk az elsődleges kulcsokat.
Az elsődleges kulcsoknak nem az a lényege, hogy sorfolytonos legyen, hanem, hogy egyedileg azonosítson. Az meg több, mint ártalmas, ha egyszer egyik, máskor másik az Id-je.
Random lekérdezéshez meg a SELECT foo FROM table ORDER BY RANDOM() LIMIT 1 a megoldás (MySQL, PostgreSQL, de könnyen átültethető másra is.)
----------------
Lvl86 Troll
- A hozzászóláshoz be kell jelentkezni