Auto_increment и проверка на пустые строки

Тема в разделе "SQL", создана пользователем zloi, 7 янв 2008.

Статус темы:
Закрыта.
  1. zloi

    zloi Гость

    Вспомнил, есть еще один вопросик. Предположим есть такая таблица:

    1 ! раз
    2 ! два
    3 ! три
    ...
    и тд.
    ну соответственно цифирки это AUTO_INCREMENT. В связи с этим есть вопрос. При удалении допустим 2-й записи по умолчанию данные добавляются в конец (те 4, 5, 6 и тд). Как сделать проверку на пустые строки и добавлять не в конец таблицы, а сначала в пустые строки, а только если их нету, тогда в конец.
     
  2. diff

    diff Гость

    vse verno, po umolchaniu vse dobovlyaetsya v konec tablicy. esli vam princypial'no dobovlyat' vse po poryadku, to na moi vzglyad luchei realizaciei budet ne udalenie a ochistka polei.

    naprimer u nas est'
    id ! name
    1 ! раз
    2 ! два
    3 ! три
    4 ! chetyre
    5 ! pyat'

    ochistili 3-e znachenie(vmesto delete delaem update), togda my imeem
    id ! name
    1 ! раз
    2 ! два
    3 !
    4 ! chetyre
    5 ! pyat'

    shtoby naiti stroki s pustymi znacheniyami i vstavit' tuda dannye my delaem sledushee
    Код (Text):
    SELECT id FROM our_table WHERE name='' ORDER BY id ASC LIMIT 1; #id=3
    UPDATE our_table SET name='sto' WHERE id=3
    poluchaem
    id ! name
    1 ! раз
    2 ! два
    3 ! sto
    4 ! chetyre
    5 ! pyat
     
  3. zloi

    zloi Гость

    to sax_ol
    то есть вы предлагаете ничего не делать, и допустить непомерное разрастание таблицы?

    просто есть небольшой нюанс: поле под счетчик МАКСИМУМ трехзначный, соответственно максимальное количество записей 999, так ведь?
     
  4. diff

    diff Гость

    erundoi zanimaetes' vy, t.k. mnogo krika iz nichego!
    ya je predlojil reshenie, kotoroe otvechaet trebovaniyam TS, nikto nigovorit, shto tak nujno delat', no esli nujno dlya samoobrazovaniya ili dlya sebya napisat' script, to mojno i tak, hotya podhod deistvitel'no iznachal'lno neverny.
     
  5. zloi

    zloi Гость

    блин, народ, может завязывайте ругаться, а?

    to sax_ol
    именно это я и хочу сказать. интерес просто у меня достаточно академический. если действительно есть такие ограничения по таблице, то как это сделать?
     
  6. diff

    diff Гость

    Vy pravy, TZ deistvitel'no net, TS - topic starter(t.e. v dannom sluchae zloi). dumau my smojem pomoch' zlomu v reshenii ego voprosa, esli on vylojit svoi script i na primere dvuh variantov(moego ne pravil'nogo i vashego) my pokajem, dlya chego nujen autoincrement i kak snim rabotat', shtoby v budushem, ne voznikalo podobnyh tem :blink:
     
  7. zloi

    zloi Гость

    Вот поэтому я вам тут и пишу...
    :lol:
     
  8. maykoff

    maykoff Гость

    Как ещё один вариант -
    select * from table -> в массив
    затем
    truncate table
    затем на основании массива
    insert into table (fields) (values),(values)...

    ИМХО - лишнее.
    Согласен с sax_ol
    Если нужен какой-то порядок в базе (например - порядок вывода записей) - лучше использовать для этого отдельное поле (unique) - скажем, микросекунды или random. Тогда, поменяв эти поля у двух записей и выбрав записи order by ... - вы на выводе поменяем их местами. Таким образом часто реализуется порядок пунктов в меню CMS

    И ещё - сюда же:
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей