• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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

  • Автор темы Автор темы zloi
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
Z

zloi

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

1 ! раз
2 ! два
3 ! три
...
и тд.
ну соответственно цифирки это AUTO_INCREMENT. В связи с этим есть вопрос. При удалении допустим 2-й записи по умолчанию данные добавляются в конец (те 4, 5, 6 и тд). Как сделать проверку на пустые строки и добавлять не в конец таблицы, а сначала в пустые строки, а только если их нету, тогда в конец.
 
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
Код:
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
 
to sax_ol
то есть вы предлагаете ничего не делать, и допустить непомерное разрастание таблицы?

просто есть небольшой нюанс: поле под счетчик МАКСИМУМ трехзначный, соответственно максимальное количество записей 999, так ведь?
 
Не болтайте ерундой. И не предлагайте ерунду.
Для: zloi
Не надо ничего проверять, СУБД сама знает что делает, не мешайте ей.

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.
 
блин, народ, может завязывайте ругаться, а?

to sax_ol
именно это я и хочу сказать. интерес просто у меня достаточно академический. если действительно есть такие ограничения по таблице, то как это сделать?
 
Для: 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:
 
Как ещё один вариант -
select * from table -> в массив
затем
truncate table
затем на основании массива
insert into table (fields) (values),(values)...

ИМХО - лишнее.
Согласен с sax_ol
Не надо ничего проверять, СУБД сама знает что делает, не мешайте ей.

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

И ещё - сюда же:
Команда OPTIMIZE TABLE должна использоваться после удаления большей части таблицы или если в таблице было внесено много изменений в строки переменной длины (таблицы, в которых есть столбцы VARCHAR, BLOB или TEXT). Удаленные записи поддерживаются при помощи связного списка, и последующие операции INSERT повторно используют позиции старых записей. Чтобы перераспределить неиспользуемое пространство и дефрагментировать файл данных, можно воспользоваться командой OPTIMIZE TABLE.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab