Вернуться   HitForum - Форумы Мариупольской Городской Сети > HiTech > Web-разработка > Скрипты

Ответ
 
Опции темы
Старый 03.05.2009, 00:43   #1
Бывалый
 
Аватар для maddy
 
Регистрация: 13.05.2007
Сообщений: 304
Вес репутации: 12 maddy скоро станет знаменитым(-ой)maddy скоро станет знаменитым(-ой)


Отправить сообщение для maddy с помощью ICQ
По умолчанию Очередной вопрос по MYSQL

Люди, помогите плиз, к гуглу по человечески обратиться не смог, потому что сформулировать это кратко как-то не вышло.
Вот есть у меня в базе данных в таблице, поле с параметром Авто-инкрипмент и все с ним нормально ячейки с добавленной информацией нумеруются примерно так.

1
2
3
4
Но стоит удалить хоть одну запись, как получается фигня типа
1
3
4
Так вот собственно вопрос как сделать так, чтобы нумерация не сбивалась, как-то упорядочить чтоли
до такого состояния

1
2
3
И отсутствовали выпавшие порядковые номера
__________________
[Только зарегистрированные пользователи могут видеть ссылки. Регистрация!]
maddy вне форума   Ответить с цитированием
Старый 03.05.2009, 09:25   #2
Знаменитость
 
Аватар для voland
 
Мужчина
Регистрация: 18.12.2004
Возраст: 36
Сообщений: 2,361
Вес репутации: 0 voland кажется, это ваша репутацияvoland кажется, это ваша репутацияvoland кажется, это ваша репутацияvoland кажется, это ваша репутация

Отправить сообщение для voland с помощью ICQ Отправить сообщение для voland с помощью Skype™
По умолчанию Ответ: Очередной вопрос по MYSQL

maddy, сделайте копированием данных таблицы в новую. Я попробовал - получилось. Запрос типа:

INSERT INTO dest (F1,F2,F3) SELECT F1, F2, F3 FROM src ORDER BY IND

То есть сортировка будет по IND, а в таблице dest нужно предварительно создать поле IND с автоинкрементом. Потом можно переименовать таблицу. Если данных не много - этот путь должен подойти.
voland вне форума   Ответить с цитированием
Старый 03.05.2009, 10:55   #3
Гуру
 
Аватар для Madga
 
Мужчина
Регистрация: 28.11.2006
Сообщений: 2,664
Вес репутации: 18 Madga луч света в тёмном царствеMadga луч света в тёмном царствеMadga луч света в тёмном царствеMadga луч света в тёмном царствеMadga луч света в тёмном царствеMadga луч света в тёмном царстве


По умолчанию Ответ: Очередной вопрос по MYSQL

C SQL давно не работал, но припоминаю что писали функции, которые пересчитывали ключи. Там есть встроенные какието, погугли в этом ключе...
Madga вне форума   Ответить с цитированием
Старый 06.05.2009, 21:22   #4
Эксперт
 
Аватар для Makar
 
Мужчина
Регистрация: 20.12.2006
Сообщений: 1,627
Вес репутации: 37 Makar . Такую репутацию нельзя пошатнутьMakar . Такую репутацию нельзя пошатнутьMakar . Такую репутацию нельзя пошатнутьMakar . Такую репутацию нельзя пошатнутьMakar . Такую репутацию нельзя пошатнутьMakar . Такую репутацию нельзя пошатнутьMakar . Такую репутацию нельзя пошатнутьMakar . Такую репутацию нельзя пошатнутьMakar . Такую репутацию нельзя пошатнутьMakar . Такую репутацию нельзя пошатнутьMakar . Такую репутацию нельзя пошатнуть


По умолчанию Ответ: Очередной вопрос по MYSQL

Сдается мне, что сама задача поставлена не правильно. Ну да ладно. Если автоинкрементное поле - ключ - то апдейтить или менять его - это самоубийство. Если это не ключ - то навскидку вариант такой - при удалении строки узнаем ее номер, запоминаем, и апдейтим строку с максимальным номер на удаленный. Можно триггер повесить.
Makar вне форума   Ответить с цитированием
Старый 30.05.2009, 08:30   #5
Прижившийся
 
Аватар для Gekka
 
Регистрация: 24.01.2009
Сообщений: 53
Вес репутации: 0 Gekka сделал(а) немного плохих вещей в прошлом

По умолчанию Ответ: Очередной вопрос по MYSQL

Цитата:
Сообщение от Makar Посмотреть сообщение
Сдается мне, что сама задача поставлена не правильно. Ну да ладно. Если автоинкрементное поле - ключ - то апдейтить или менять его - это самоубийство. Если это не ключ - то навскидку вариант такой - при удалении строки узнаем ее номер, запоминаем, и апдейтим строку с максимальным номер на удаленный. Можно триггер повесить.
В общем то да, но есть камушек. Номер следующей замиси он берет из переменной "autoindex", ее тоже нужно будет редактировать.
Gekka вне форума   Ответить с цитированием
Старый 15.06.2009, 19:57   #6
Растущий
 
Аватар для int18h
 
Мужчина
Регистрация: 01.11.2008
Возраст: 35
Сообщений: 124
Вес репутации: 9 int18h скоро станет знаменитым(-ой)

Отправить сообщение для int18h с помощью Skype™
По умолчанию Ответ: Очередной вопрос по MYSQL

Цитата:
Сообщение от Madga Посмотреть сообщение
C SQL давно не работал, но припоминаю что писали функции, которые пересчитывали ключи. Там есть встроенные какието, погугли в этом ключе...

не работай с SQL вообще, навсегда...


по поводу твоей задачи..
смотри: autoincrement поле - есть последовательность, зачем же тебе нарушать эту последовательность..
как правило такое поле используется в качестве ключа, то есть менять его - убить свою базу..
если все таки это не ключ.. давай рассмотрим таблицу размеров в 300000000 записей, причем это будет к примеру портал, к которому люди обращаются постоянно
скажем последовательность идет так
999999 - пред. запись.
1000000 - удалили
1000001 - след запись
представь сколько записей тебе надо перелопатить своей процедурой..
прочитай это [Только зарегистрированные пользователи могут видеть ссылки. Регистрация!]
думаю то что тебе нужно будет
int18h вне форума   Ответить с цитированием
Ответ

  HitForum - Форумы Мариупольской Городской Сети > HiTech > Web-разработка > Скрипты


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
бесплатный сайт Lord CA Web-разработка 33 03.02.2013 22:09
Формула - 1. Сезон 2008 года. Aleks79 Авто-мото спорт 402 08.10.2009 04:30
Формула-1. Сезон 2009 года Aleks79 Авто-мото спорт 99 02.09.2009 21:20
MySQL и PHP maddy Скрипты 4 18.12.2008 21:48

© 2003 - HitLine.
Часовой пояс GMT +3, время: 01:35.