MySQL -> auto_increment - znovupouzitie indexov uz zmazanych zaznamov

Sekcia: Programovanie 23.06.2008 | 17:13
Avatar Peter Rozum Arch Linux  Používateľ
zdravim,

mam jeden problem, ktory by som chcel co najskor poriesit. trochu som googlil ale nenasiel som nic co by som chcel pouzit.

problem je nasledovny: mam jednu tabulku v databaze. tabulka ma stlpec id ktory je primarny kluc a je auto_increment. do tabulky sa zaznamy vkladaju a aj mazu. pri vlozeni zaznamu je riadku v stlpceku id pridelene cislo, ktore je o jednotku vacsie ako najvacsi index v stlpci. ked zmazem jeden riadok z tabulky, zmaze sa aj index toho riadku a hodnota indexu zostane nepouzita, takze po nejakom case vkladania a mazania zaznamov v stlpci id budem mat neuplnu postupnost cisel.

moja otazka je: ako docielim aby pri vkladani zaznamu do tabulky bola tomuto zaznamu do policka id pridelena najnizsia volna hodnota z celeho stlpca?

nechcem to riesit mazanim a znovuzakladanim stlpca s indexami. ak mysql taku vlastnost, ktoru hladam, nema tak by som bral aj pouzitie vnutorneho selectu, ktory by tu najmensiu nepouzitu hodnotu vedel najst.

tabulka je samostatna, bez ziadnych vztahov na ine tabulky a predpokladam, za viac zaznamov ako 100 tam nikdy nebude.
Everything is proceeding as I have foreseen.
    • Re: MySQL -> auto_increment - znovupouzitie indexov uz zmazanych zaznamov 23.06.2008 | 18:55
      Avatar djway UBUNTU 8.10  Používateľ
      no ved si sprav procedurku, ktora ti to najnizsie volne cislo najde, mas viacero moznosti, staci pouzit logiku, o tom je programovanie... napr. mozes porovnavat rozdiely aktualneho a nasledujuceho id ak je rozdiel 1, tak sa len presunies na dalsie id, ak je 2, tak sa posunies na dalsie id a tuto hodnotu id pouzijes na zapisanie do tabulky... toto ma momentalne napadlo, no nevylucujem, ze to ide vyriesit aj este lahsie...
    • Re: MySQL -> auto_increment - znovupouzitie indexov uz zmazanych zaznamov 23.06.2008 | 19:03
      Avatar Samuel BWPOW Kupka CentOS, Mandriva  Používateľ
      MySQL takuto vlastnost nema. auto_increment je len obycajna premenna, ktora sa pri kazdom inserte zvysi o jedna (tato vlastnost je dokonca vyzadovana, aby sa jedno id uz nikdy neobjavilo, aj ked ho vymazes). Osobne by som to riesil tak, ze by som si napisal trigger on insert, ktory by najmensie nepouzite id vyhladal a pri inserte ho pouzil. Ale z brucha to napisat neviem, trigger som naposledy pouzil asi na vyske a v realnej prevadzke ich nevyuzivam.
      Strach dát najevo své pocity a zjednat si u druhých respekt je jedním z problémů civilizovaného člověka, který se naučil zpochybňovat svou vlastní pravdu pro zdání objektivity
    • Re: MySQL -> auto_increment - znovupouzitie indexov uz zmazanych zaznamov 10.07.2008 | 01:31
      stando   Návštevník
      ALTER TABLE table AUTO_INCREMENT = value;
      • Re: MySQL -> auto_increment - znovupouzitie indexov uz zmazanych zaznamov 23.04.2009 | 19:05
        patqo   Návštevník
        aa ako si zistim aku hodnotu mam nastavenu v AUTO_INCREMENT ak som ju menil??