Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Вставка в середину таблицы новой строки


Автор: fervex 27.5.2008, 22:54
Здравствуйте!  smile 

Есть таблица:

Id    Name    Surname
++++++++++++++++
1     Ivan      Cherezov
2     Max       Presnin
3     Petr       Gorin
4     Fedor     Kalinin
5     Leonid    Kuptsov

Подскажите, каким запросом можно вставить строку:

2    Timur   Kirillov

так, чтобы строки с Id 2,3,4,5 в первоначальной таблице стали иметь Id 3,4,5,6, т.е. спустить все последующие строки на +1 по Id?


Спасибо! smile 

Автор: v2v 27.5.2008, 22:59
[]

Автор: skyboy 27.5.2008, 23:03
если тебе нужен порядок сортировки, делай его через дополнительное поле(назови его, к примеру, porjadok)
первичный ключ(коим, как я верю, у тебя выступает поле id) совсем для другого предназначен - не для сортировки.

Автор: Fortop 27.5.2008, 23:06
skyboy, 
+1

P.S. что у тебя с небритостью происходит? smile

Автор: Feldmarschall 27.5.2008, 23:47
fervex, никогда так не делай, как тебе v2v написал.

Автор: fervex 27.5.2008, 23:48
Спасибо!


А можно как-то сделать так, чтобы 

update table_name
set id = id + 1
where id > 1;

начинало с самого последнего id (в примере это 5), увеличивало его на +1, потом переходило к предыдущему и т.д. до 2 включительно, чтобы duplicated error не возникал?


Автор: Fortop 27.5.2008, 23:50
fervex, 
Цитата(fervex @  27.5.2008,  23:48 Найти цитируемый пост)
начинало с самого последнего id (в примере это 5), увеличивало его на +1, потом переходило к предыдущему и т.д. до 2 включительно, чтобы duplicated error не возникал?

Тебе skyboy, написал КАК нужно делать.

А менять ID у записей нельзя, иначе ты костей от базы потом не соберешь.

Автор: v2v 27.5.2008, 23:51
[]

Автор: Fortop 27.5.2008, 23:53
v2v, ну и что ты делаешь? 

Автор: v2v 27.5.2008, 23:55
Fortop, отвечаю на вопрос. думаю автор умеет читать и проанализировал все предложенные ему решения!

Автор: Akina 28.5.2008, 09:15
fervex, запомни навсегда - уникальный индекс-счетчик используется ТОЛЬКО для идентификации записи, организации связей и поддержания целостности. Его программное изменение - табу. 
Если нужно, чтобы в таблице было поле, имеющее какой-то внешний смысл (скажем порядковый номер) - необходимо для этого завести специальное поле.

Любое отступление от этого правила непременно принесет тебе много беспокойства в будущем.

Автор: fervex 28.5.2008, 16:56
Спасибо за советы!  smile 

Так и поступлю!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)