|
|
|
| Есть таблица:
REATE TABLE `country` (
`id_country` int(6) NOT NULL auto_increment,
`name` mediumtext NOT NULL,
PRIMARY KEY (`id_country`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
|
Проблема:
Если добавить несколько стран(в скобках буду указывать параметр id_country), к примеру Россия(1), Украина(2), Польша(3), США(4). После этого удалить США, Польшу. Потом добавить Великобританию, то порядковый номер(id_country) в таблице будет 5, а нужно, чтобы был 3, как это сделать?
P.S.
Скрипт добавления и удаления стран можно посмотреть по ссылке http://softtime.ru/forum/read.php?id_forum=1&id_theme=43713&page=1 | |
|
|
|
|
|
|
|
для: Dizels
(26.09.2007 в 13:24)
| | Никак, это поле у вас с автоинкрементом. | |
|
|
|
|
|
|
|
для: sim5
(26.09.2007 в 13:55)
| | Т.е. получается нужно при добавлении страны это поле заполнять и убрать avto_increment? | |
|
|
|
|
|
|
|
для: Dizels
(26.09.2007 в 13:24)
| | Весь смысл ключа auto_increment как раз в том и заключается, что он не повторяется никогда, в таблице есть внутренний счетчик, увеличивающийся при добавлении новой строки с автоинкремент полем и не уменьшающийся при удалении (вообще никогда не уменьшающийся).
Такой подход обеспечивает целостность ссылок при удалении строк.
Если Вам очень нужно получить порядковый номер в выборке можно использовать SQL запрос вида:
SET @n:=0;
SELECT @n:=@n+1 as `rownum`, `Id` FROM `table`
|
Если при добавлении нужно вставлять индекс именно Max(`Id`)+1, можно использовать php код, т.е. сначала найти Max(`Id`)+1, потом делать insert. | |
|
|
|