Просмотр полной версии : вопрос по mysql
!{ra!{e/\/
13.02.2008, 18:41
--------------------
N | street | col |
1 blabla1 bla1
--------------------
2 blabla2 bla2
--------------------
3 blabla3 bla3
--------------------
4 blabla4 bla4
есть такая mysql база где N- auto_inc и primary_key удаляю оттуда 2строку
delete FROM `bd` where `N`=2 "
Получается вот так
--------------------
N | street | col |
1 blabla1 bla1
--------------------
3 blabla3 bla3
--------------------
4 blabla4 bla4
Как мне настроить БД чтоб N автоматически менялся т .е было так...или как легче это сделать?
--------------------
N | street | col |
1 blabla1 bla1
--------------------
2 blabla3 bla3 тут чтоб 3 заменилось на 2
--------------------
3 blabla4 bla4 тут 4 на 3 и так далее
spider-intruder
13.02.2008, 18:52
Не понятно - то те колонку N надо уменьшать то уже символ в поле стрит. пересмотри пост ты все верно написал?
!{ra!{e/\/
13.02.2008, 18:55
все написал правильно там
мне нужно я удаляю строку а солбец N как бы расставляется 1 2 3 4 .....
Как мне настроить БД чтоб N автоматически менялся
Никак... Либо Php скриптом, но толку?
// $N1 - N удаляемой записи
$sql="UPDATE `mytable` SET N=N-1 WHERE N>$N1"
Так, наверно.
Только работать всё поэтому будет ме-е-е-е-едленно...
Тогда нарушится автонкремент... =\ Смысла в нем исчезает
Тогда нарушится автонкремент...
м-м-м... вот в firebird/interbase триггер можно сделать...
а так, действительно, автоинкремент вручную надо делать:
$newN <= SELECT COUNT(N) From `mytable`
$newN++;
INSERT INTO `mytable` VALUES ($newN, 'somenewtext');
!{ra!{e/\/
13.02.2008, 19:06
я написал сайт....и при удалении какой либ строки предаю гет запросом n и удаляю строку но при этом структура вся меняется....
скажи лучше зачем тебе менять N ?
"структура вся меняется"
Куда она меняется-то?
Убери auto_increment и при добавлении чего-то ставь N + 1, при удалении N -1
Проблема то =\
Убери auto_increment и при добавлении чего-то ставь N + 1, при удалении N -1
Проблема то =\
Вот и я про то же... Только всё равно не понимаю, нахрена это надо-то? Так каждое удаление будет всю таблицу перекручивать...
!{ra!{e/\/
13.02.2008, 19:17
Убери auto_increment и при добавлении чего-то ставь N + 1, при удалении N -1
Проблема то =\
это так если только я удаляю самую нижнюю строку а если нет то надо по всем нижестоящим $n+1...просто это получаестя не оптимально...придется переписавать некоторые моменты кода..
!{ra!{e/\/
13.02.2008, 19:19
Вот и я про то же... Только всё равно не понимаю, нахрена это надо-то? Так каждое удаление будет всю таблицу перекручивать...
просто я написал сайт упираясь на прим кей N вот доделал удаление данных и понял что после удаления все работает некорректно.....
Значит лучше будет переписать участки кода?да?
astrologer
13.02.2008, 19:20
Разве это не является одним из принципов реляционной БД?
С ним не нужно бороться :)
Значит лучше будет переписать участки кода?да?
Либо так, либо... Зачем тебе нужен N? Так если ты его выводишь, то можешь получить номер записи(порядковый) так:
SELECT COUNT(N) FROM `mytable` where N <= (N из твоей записи)
Мда...у тебя прим.кей id не изменяется при авто_инкремент, а ыт говоришь что после удаления что-то не то упираясь на прим.кей...
Противоречие получается, правда?
Ищи ошибку в коде
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot