Auto_increment параллельно))

(Ответов: 10, Просмотров: 1107)
Страница 1 из 2 12 Последняя
  1. Студент
    • Регистрация: 03.06.2014
    • Сообщений: 61
    • Репутация: 6
    • Webmoney BL: ?
    Hi ALL!))
    юзеры добавляют записи в первую таблицу, при добавлении могут выбрать один из подразделов (список подразделов - создано как вторая таблица).
    каждая новая запись пишется с авто_инкрементом (в первой таблице), но он один сквозной на все подразделы.
    как создать или сформировать авто_инкремент для каждого подраздела - свой?
    • 0
  2. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    provoloka, если я правильно вас понял, свяжите 2 таблицу с первой по ID и вторым запросом добавляйте запись во 2 таблицу
    • 1

    Спасибо сказали:

    provoloka(29.08.2014),
  3. Студент
    • Регистрация: 29.01.2011
    • Сообщений: 32
    • Репутация: 11
    Разве, что вручную самому вычислять новое число автоинкремента. Делать запрос во вторую связанную таблицу и смотреть какое должно быть следующее значение. Соответственно примари ключ во второй таблице должен включать id первой таблицы и свой собственный. Можно реализовать через тригер, в итоге в коде никаких лишних телодвижений делать не придется.
    Автоматически реляционный базы данных умеют вести автоинкремент один общий для одной таблицы.
    • 1

    Спасибо сказали:

    provoloka(29.08.2014),
  4. Дипломник
    • Регистрация: 27.06.2013
    • Сообщений: 117
    • Репутация: 17
    Для определения последнего айди - MYSQL_INSERT_ID(). А так не понятно, нужна структура таблиц.

    Цитата Сообщение от provoloka Посмотреть сообщение
    но он один сквозной на все подразделы
    • 1

    Спасибо сказали:

    provoloka(29.08.2014),
  5. Студент
    • Регистрация: 03.06.2014
    • Сообщений: 61
    • Репутация: 6
    • Webmoney BL: ?
    cOAPerator, во второй таблице просто лежат названия подразделов, чтобы юзеры их выбирали из списка и вставляли id в свою строку в первой таблице. а далее на фронт-выводе инфы берется id подраздела и выводится его название. это не суть.

    нужна такая схема:
    Вася создал строку в 1таблице, для строки дается автоинкремент например 101 (по табл1), при этом выбрал из 2табл подраздел например 24 - в 1табл записались введенные Васей данные плюс id подраздела, в данном случае 24
    далее
    Петя создал строку в 1таблице, для строки дается автоинкремент 102 (по табл1), при этом выбрал из 2табл подраздел например 18 - в 1табл записались введенные Петей данные плюс id подраздела, в данном случае 18
    далее
    Олег создал строку в 1таблице, для строки дается автоинкремент 103 (по табл1), при этом выбрал из 2табл подраздел 35 - в 1табл записались введенные Олегом данные плюс id подраздела, в данном случае 35
    далее
    Анатолий создал строку в 1таблице, для строки дается автоинкремент 104 (по табл1), при этом выбрал из 2табл подраздел 18 - в 1табл записались введенные Анатолием данные плюс id подраздела, в данном случае 18

    теперь самое интересное!
    как видим, ребята выбрали подразделы 18, 24, 35, причем подраздел 18 - два раза
    вот это и надо сохранить, или в третьей таблице или еще где-то, что:
    подраздел SUPER-ID id-post
    18 1 102
    18 2 104
    24 1 101
    35 1 103
    я говорю про SUPER-ID - как его вычислять и писать?

    при этом подразделы могут добавляться админом во 2 таблицу и юзеры соответственно будут выбирать их.
    пока думаю такой вариант - админ добавил подраздел - создается для этого подраздела свою таблица? и в неё писать копии строк с учетом ID - у нее будет свой автоинкремент и тд.
    Последний раз редактировалось provoloka; 29.08.2014 в 11:57.
    • 0
  6. Дипломник
    • Регистрация: 27.06.2013
    • Сообщений: 117
    • Репутация: 17
    При сохранении. Допустим переменные %SUB_CATEGORY%, %POST_ID%.
    Код:
    INSERT INTO table1 SELECT %SUB_CATEGORY%, MAX(table1.super_id) + 1, %POST_ID% FROM table1 WHERE table1.sub_category_id = %SUB_CATEGORY%
    По дефолту поле должно быть 1.
    • 1

    Спасибо сказали:

    provoloka(30.08.2014),
  7. Студент
    • Регистрация: 03.06.2014
    • Сообщений: 61
    • Репутация: 6
    • Webmoney BL: ?
    т.е. индекс увеличивается внутри запроса? а если куча юзеров будет добавлять? или база сама по очереди разрулит всех?
    я сам не смогу имитировать кучу юзеров, вот в чем дело-то.
    • 0
  8. Студент
    • Регистрация: 29.01.2011
    • Сообщений: 32
    • Репутация: 11
    Цитата Сообщение от provoloka Посмотреть сообщение
    т.е. индекс увеличивается внутри запроса? а если куча юзеров будет добавлять? или база сама по очереди разрулит всех?
    я сам не смогу имитировать кучу юзеров, вот в чем дело-то.
    Если база транзакционная и транзакции включены, то база разрулит. Если это обычная база MyISAM то могут всплыть траблы.
    • 1

    Спасибо сказали:

    provoloka(04.09.2014),
  9. Студент
    • Регистрация: 24.01.2013
    • Сообщений: 94
    • Репутация: 14
    • Webmoney BL: ?
    Вы неправильно спроектировали базу данных.

    Код:
    INSERT INTO table1 SELECT %SUB_CATEGORY%, MAX(table1.super_id) + 1, %POST_ID% FROM table1 WHERE table1.sub_category_id = %SUB_CATEGORY%
    Это неправильное решение.

    И давайте осмысленное название своим таблицам и полям. Пожалейте других людей, кто будет работать с вашим кодом. Не забывайте о существовании комментариев.
    • 0
  10. Студент
    • Регистрация: 03.06.2014
    • Сообщений: 61
    • Репутация: 6
    • Webmoney BL: ?
    база обычная, без транзакции.
    все-таки склоняюсь к вычислению искомого числа через формулу и просто выдавать результат на фронт, как-то сложно все, что выше))))
    • 0
Страница 1 из 2 12 Последняя

Похожие темы

Темы Раздел Ответов Последний пост
Вывод картинки параллельно с работой скрипта
Web программирование 6 19.01.2012 22:42

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры