За последние 24 часа нас посетили 20448 программистов и 1092 робота. Сейчас ищет 891 программист ...

Определённые числа

Тема в разделе "MySQL", создана пользователем Ezhevsky, 16 май 2020.

  1. Ezhevsky

    Ezhevsky Активный пользователь

    С нами с:
    2 апр 2020
    Сообщения:
    86
    Симпатии:
    1
    Добрый день, подскажите пожалуйста, как сделать так, что бы отправляя данные в базу, id (к примеру) считалось с автоинкрементом не 1, 2, 3 ... а так как я захочу? Например 1000, 1001, то есть с определённого числа а не от нуля.
     
  2. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
  3. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.789
    Симпатии:
    646
    Установите автоинкрементальный счетчик в 1000. В чем проблема?

    Например, резерв начального диапазона для каких-то особых записей.
     
  4. Ezhevsky

    Ezhevsky Активный пользователь

    С нами с:
    2 апр 2020
    Сообщения:
    86
    Симпатии:
    1
    Как правильно сделать? Я просто понять не могу, прошу прощения)
     
  5. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    Нет ничего глупее этого.
    Идентификатор строки необходим исключительно для обеспечения уникальности строки. Никого кроме самою базу данных не должно волновать какое значение имеет идентификатор, важно только то, что он уникальный.
    Как только программист забывает (не успевает узнать) об этом и тянет свои шаловливые ручёнки к идентификатору строки стараясь на него как-то повлиять, начинаются большие проблемы.
     
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.789
    Симпатии:
    646
    Мускул? http://u75.ru/mysql-alter – найдите в определении AUTO_INCREMENT и сведите по определению в готовый запрос.

    @Valick, я со своей «глупостью» как-нибудь сам разберусь. Вот что действительно глупо, так это мыслить догмами, не вникая в детали, не учитывая особенности и т.п.
     
  7. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    Правильно это никогда не делать. Если нужен какой-то особенный порядок нумерации, просто необходимо добавить дополнительное поле в таблицу базы данных.
     
  8. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.789
    Симпатии:
    646
    @Valick, никто не писал, что нужно прямо жестко навешивать доп. смысловую нагрузку на опред. идентификаторы. Почему ты исключаешь категорию желаемого?

    Кстати, даже если забить на желания, все равно бывают исключения. Типичный пример – нулевой идентификатор – на него часто навешивают доп. смысловую нагрузку.
    --- Добавлено ---
    Например, я хочу админам или почетным модерам форума «выдавать» «красивые» id-шники. Или, например, я хочу спец. страницам и коллекциям «выдавать» «красивые» id-шники, «сдвинув» автоинкрементальный счетчик подальше для всех прочих (каких-то регулярных) страниц (речь о таблице со слагами и проч. подобной инфой для однокомпонентных путей: /mypage).
     
  9. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.789
    Симпатии:
    646
    На автоинкрементальное поле часто навешивается хронология создания. Почему бы не создать отдельное поле? Нафиг создавать отдельное поле-точную копию уже существующего? Да еще нести доп. затраты по формированию значений этого отдельного поля?
     
  10. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    Она не навешивается, она есть по своей сущности. А ты предлагаешь ТС эту хронологию сломать.
    Ты сейчас несёшь такую ересь, что самое время остановиться.
     
  11. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.789
    Симпатии:
    646
    Да, можешь остановиться, если нечего сказать. Просить привести пример «ереси» не буду, дабы лишний раз не напрягать. Просто учись отвечать за свои слова.
     
  12. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.789
    Симпатии:
    646
    Mля, она не всегда нужна, поэтому я использовал это слово. А даже когда нужна, да, бывают случаи, что ее требуется «сломать». Это делается, чтобы была скрытая возможность подделать хронологию создания, т.е. когда-нибудь потом добавить начальные элементы. См. шире на вещи. Учитывай реальный опыт (можно чужой, если нет своего). Т.е. читай не только полуакадемические книжки.
     
  13. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    Просто не надо это делать через жопу. Эта задача решается, как я уже сказал, путём добавления соответствующего поля. С которым можно делать всё что угодно, целостность данных никогда не будет нарушена.
    Одна из основных задач БД - это обеспечение целостности данных. Ка только ты начинаешь манипулировать идентификатором на своё усмотрение, ты сводишь на нет все усилия базы данных в этом направлении.
    Прочти хотя бы одну, потом поговорим :)
    @miketomlin, я ТС задал вполне конкретный (риторический) вопрос. Но ты решил "блеснуть" своими "знаниями" полагая, что кроме тебя никто не знает, что инкремент можно установить произвольно специальной командой.
     
  14. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.789
    Симпатии:
    646
    Ты вообще читаешь, что я пишу? Чем резервирование нарушает целостность данных? И я тебе на картинках попытался объяснить, что очень часто доп. поле вроде order, created и т.п. нафиг не нужно, т.е. вредно, бесполезно для цели «скрытности», о кот. я писал выше. Вижу, напрасно.

    Так вот что тебя задело! В след. раз предупреждай: «народ, молчим; пускай ТС почешется» :)

    Я писал ТСу. Он походу не знает. Насчет всех остальных я как-то не задумывался ;)
     
    #14 miketomlin, 16 май 2020
    Последнее редактирование: 16 май 2020
  15. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    Меня уже очень давно трудно задеть. Просто ты слишком бурно реагируешь на любое несогласие с твоим мнением. ;)
    Ему и не надо знать. Ты оказал ему медвежью услугу. Это равноценно как пятилетнему ребёнку дать в руки боевую гранату и всем объяснять, что чека на месте ничего плохого не случится.
    Вопрос ТС - это очередная проблема молотка. Поэтому я и хотел узнать, для какой задачи он выбрал такое решение.
     
  16. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.789
    Симпатии:
    646
    :D Я в след. раз тебя так же опущу и посмотрю, как ты отреагируешь. Короче не переводи стрелки. Я не говорил, что не согласен. Я сказал, что ты слишком категоричен. А ты не захотел или не смог этого понять.

    А вдруг! Заметь, ТС ничего не писал про кривое применение, а лишь говорил о желании сделать резерв. Я верю в людей :)