MYSQL autoincrement если нет значения

DriverCat
На сайте с 10.04.2008
Offline
116
1286

Добрый день!

Загружаю файл построчно в таблицу через INSERT. В таблице есть поле id с автоинкрементом. Нужно чтобы при загрузке строки, если имеется значение id - записать его в таблицу как есть, а если нет - пусть получит автоматически id? которого еще нет в файле.

Можно ли как то это релизовать?

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#1

потёр............

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
A
На сайте с 19.07.2010
Offline
130
#2

если при вставке id равен NULL, то будет значение из автоинкримента.

если число - то запишется с таким id

только проконтролируйте, чтобы диапазоны ваших id и диапазон автоинкремента на пересекались.

например установите начальное значении автоинкримента 90000, а свои id чтобы были меньше 90000

.............
DriverCat
На сайте с 10.04.2008
Offline
116
#3
admak:
если при вставке id равен NULL, то будет значение из автоинкримента.
если число - то запишется с таким id

только проконтролируйте, чтобы диапазоны ваших id и диапазон автоинкремента на пересекались.
например установите начальное значении автоинкримента 90000, а свои id чтобы были меньше 90000

Спасибо за идею, но фишка еще в том, что это не однократная операция. То есть потом я например хочу уже с сервера загрузить эту таблицу в файл, добавить пару строк без id и снова грузануть на сервер. Тогда получится что опять таки id в файле и значению начальное автоинкремента пересекуться...

A
На сайте с 19.07.2010
Offline
130
#4
DriverCat:
Тогда получится что опять таки id в файле и значению начальное автоинкремента пересекуться...

не пересекутся.

начальное значение автоинкремента устанавливается только ОДИН раз при создании таблицы и больше его трогать не нужно.

с выгрузкой загрузкой будет все ок, т.к. автоинкремент будет всегда больше всех значений id, которые вы выгрузили раньше.

DriverCat
На сайте с 10.04.2008
Offline
116
#5
admak:
не пересекутся.
начальное значение автоинкремента устанавливается только ОДИН раз при создании таблицы и больше его трогать не нужно.

с выгрузкой загрузкой будет все ок, т.к. автоинкремент будет всегда больше всех значений id, которые вы выгрузили раньше.

вот смотрите, если начальное значение 90000, то все строки, не имеющие id будут 90000, 90001 и т.д. правильно? тогда при следующей загрузке эти вот значения и будут пересекаться с новыми...

A
На сайте с 19.07.2010
Offline
130
#6
DriverCat:
вот смотрите, если начальное значение 90000, то все строки, не имеющие id будут 90000, 90001 и т.д. правильно? тогда при следующей загрузке эти вот значения и будут пересекаться с новыми...

при следующей загрузке автоинкремент уже будет равен 90002 и он не будет пересекаться с 90000 и 90001

небольшой хинт: если вы вместо апдейта существующих записей планируете очищать всю табличку и по-новой все инсертить, то для очистки всех записей из таблицы используйте

delete from table_name

такое удаление записей - сохраняет прежнее значение автоинкримента. т.е. автоинкремент будет равен 90002

при очистке

truncate table table_name

счетчик сбрасывается в единицу.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий