![]() |
|
Модераторы: skyboy |
![]()
|
|
| Guest |
|
|||
|
Unregistered |
В таблице есть AUTO_INCREMENT поле ID. Как сделать, чтобы при удалении записи, ID сдвигались, если удалили 2-ю запись, ID равное 3 стало равным 2-м?
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Не делать. Даже выкинуть саму мысль о таком безобразии. Нужна тебе непрерывная нумерация - получай ее в момент выполнения запроса. А ID записи руками не трожь - он не для тебя, а для связывания таблиц.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 15 Всего: 54 |
Guest а действительно, зачем такое может быть нужно?..
-------------------- ![]() |
|||
|
||||
| Zandr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 433 Регистрация: 16.7.2004 Где: Новосибирск Репутация: нет Всего: 13 |
Я не гуест.
Могу предположить, что нужно обновлять бОльшую часть записей таблицы достаточно часто. Кстати, интересно, почему в столбцах auto_increment не предусмотрено повторное использование удаленных ключей, когда значение доходит до максимума... Нада литературку почитать по этому поводу... Это сообщение отредактировал(а) Zandr - 4.3.2005, 12:12 |
|||
|
||||
| Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 15 Всего: 54 |
Как это не предусмотрено?.. -------------------- ![]() |
|||
|
||||
| Zandr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 433 Регистрация: 16.7.2004 Где: Новосибирск Репутация: нет Всего: 13 |
Что и где нада сказать чтобы это использование включить? Это сообщение отредактировал(а) Zandr - 4.3.2005, 12:51 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
ЭТО в принципе не имеет смысла - а следовательно просто не надо так делать... а при наличии других полей не указываем заполнение поля ID - на то и автоматика -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Zandr |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 433 Регистрация: 16.7.2004 Где: Новосибирск Репутация: нет Всего: 13 |
Это какая-то недоавтоматика.... Есть у меня табличка с какими-нибуть объектами
Данные по этим объектам постоянно обновляются и добавляются новые (причем большими партиями из внешнего источника):
Вот тут и начинается... при замене строки предыдущая не изменяется, а удаляется и в таблицу вносится новая с соответствующими данными и следующим свободным интом. Про целостность внешних ключей на этот id не знаю (буду проверять сработает ли on update cascade), а вот счетчик-то тикает к максимуму. Очень интересно будет когда через пару лет (может больше, может меньше, может вообще не дождетесь - зависит от интенсивности работы) этот запрос начнет вываливать ошибку 1062. Хотя в таблице стабильно держится записей 500000 плюс/минус 100000 и свободных id - завались. Так что вместо одного запроса будем узнавать есть ли уже объект с таким именем, и далее либо update либо insert. Вот это мне и не нравится пока. Это сообщение отредактировал(а) Zandr - 4.3.2005, 14:29 |
||||
|
|||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Zandr
Ты... эта... какой нах... replace??? изменять записи положено инструкцией update... replace - это комбинация delete и insert, так что все пральна... хелпу читаем... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| GoodBoy |
|
|||
![]() Главный джедай ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3886 Регистрация: 8.1.2003 Где: КМВ Репутация: 2 Всего: 83 |
Стоп, не все так просто! http://dev.mysql.com/doc/mysql/ru/replace.html Если у тебя есть поле, которое Primary key и auto_increment, а ты в операторе replace его указываешь, то запись удалится и вставится с ЭТИМ ЖЕ значением данного поля!!! Т. е. никакого увеличения автоинкрементного поля НЕ произойдёт! |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Совершенно очевидно, что если ты явно указываешь значение, оно и вставляется. Движок БД - дурак без инициативы, он делает именно то что ты просишь, а если не может - сообщает об ошибке. Никакой самодеятельности он не проявляет. Так что то что говорю я, никоим образом не противоречит тому на что указываешь ты. С другой стороны явное задание значения автоинкрементному первичному ключу мне лично кажется просто глупым и не имеющим никакого смысла - даже базу так развалить, и то не удастся... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| GoodBoy |
|
||||||
![]() Главный джедай ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 3886 Регистрация: 8.1.2003 Где: КМВ Репутация: 2 Всего: 83 |
При UPDATE записи! смотри, обычно делается так:
Правильно? а при использовании REPLACE всё сводится в одной записи:
И если переменная ID_записи имеет значение, то запись с таким id - "обновится", а если переменная ID_записи не установлена, то в таблицу добавится новая запись! |
||||||
|
|||||||
| Druidik25 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 27.1.2005 Где: Киев, Украина Репутация: нет Всего: нет |
Можно ли подробнее, как можно узнать, что запись с таким параметром существует, и если нету то добавить????
|
|||
|
||||
| Secandr |
|
|||
|
Связист ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4043 Регистрация: 3.8.2003 Где: Russia, Volgograd Репутация: 6 Всего: 39 |
Druidik25 сделать селект.
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |