Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2015, 13:18   #1
Parallelogram
Недотепа
Форумчанин
 
Регистрация: 18.01.2011
Сообщений: 174
По умолчанию Добавить строку в середину таблицы

Здравствуйте, как добавить строку в середину таблицы, чтобы не нарушилась последовательность?

id - авто инкремент
position - к последней добавленной строке прибавляется единица. По нему я сортирую.

id position file
01 1 cat.jpg
14 2 straus.jpg
15 3 dog.jpg
18 4 bird.jpg
22 5 fish.jpg

Как вставить "human.jpg" между 1 и 2, но чтобы получилось так:

id position file
01 1 cat.jpg
23 2 human.jpg
14 3 straus.jpg
15 4 dog.jpg
18 5 bird.jpg
22 6 fish.jpg
Parallelogram вне форума Ответить с цитированием
Старый 27.02.2015, 13:23   #2
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

update + insert
lomastr_ вне форума Ответить с цитированием
Старый 27.02.2015, 13:24   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Предположу:
Код:
UPDATE table SET position = position + 1 WHERE position > 1
INSERT INTO table (position, file) VALUES (2, 'human.jpg')
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 27.02.2015, 15:16   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А если такая операция часто встречается и таблица большая? По каждой такой вставке обновлять в среднем половину записей? Уж точно лучше в это поле писать какой-то суррогат, позволяющий между двумя соседними записями некую середину находить. Типа между 100 и 200 - 150. И только когда уже не возможно - или реорганизовать, или так как выше предложили. Лучше реорганизовать, дав возможность опять середину находить. Собственно выше предложенный вариант и есть реорганизация, только она будет повторяться каждый раз
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 27.02.2015 в 15:19.
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Listbox добавить строку Кольша Общие вопросы Delphi 1 12.01.2012 18:57
добавить в середину массива n элементов Lerris Общие вопросы C/C++ 0 16.12.2011 21:50
добавить в середину массива n элементов Lerris Общие вопросы C/C++ 2 14.12.2011 21:47
Добавить строку SkrudjMakdak Microsoft Office Excel 1 05.09.2010 18:06
Добавить строку в TStringList мимо Общие вопросы Delphi 11 17.02.2010 18:42