вопрос по mysql

Discussion in 'PHP' started by !{ra!{e/\/, 13 Feb 2008.

  1. !{ra!{e/\/

    !{ra!{e/\/ Banned

    Joined:
    27 Aug 2007
    Messages:
    98
    Likes Received:
    50
    Reputations:
    3
    Code:
     
    --------------------
    N | street | col |
    1   blabla1   bla1
    --------------------
    2   blabla2   bla2
    --------------------
    3   blabla3   bla3
    --------------------
    4   blabla4   bla4
    
    есть такая mysql база где N- auto_inc и primary_key удаляю оттуда 2строку
    Code:
    delete FROM `bd` where `N`=2 "
    Получается вот так
    Code:
    --------------------
    N | street | col |
    1   blabla1   bla1
    --------------------
    3   blabla3   bla3
    --------------------
    4   blabla4   bla4
     
    Как мне настроить БД чтоб N автоматически менялся т .е было так...или как легче это сделать?
    Code:
    --------------------
    N | street | col |
    1   blabla1   bla1
    --------------------
    2   blabla3   bla3   тут чтоб 3 заменилось на 2
    --------------------
    3   blabla4   bla4    тут 4 на 3 и так далее
     
     
  2. spider-intruder

    spider-intruder Elder - Старейшина

    Joined:
    9 Dec 2005
    Messages:
    700
    Likes Received:
    339
    Reputations:
    37
    Не понятно - то те колонку N надо уменьшать то уже символ в поле стрит. пересмотри пост ты все верно написал?
     
  3. !{ra!{e/\/

    !{ra!{e/\/ Banned

    Joined:
    27 Aug 2007
    Messages:
    98
    Likes Received:
    50
    Reputations:
    3
    все написал правильно там
    мне нужно я удаляю строку а солбец N как бы расставляется 1 2 3 4 .....
     
  4. bul.666

    bul.666 булка

    Joined:
    6 Jun 2006
    Messages:
    719
    Likes Received:
    425
    Reputations:
    140
    Никак... Либо Php скриптом, но толку?
     
  5. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    // $N1 - N удаляемой записи
    $sql="UPDATE `mytable` SET N=N-1 WHERE N>$N1"

    Так, наверно.
     
  6. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    Только работать всё поэтому будет ме-е-е-е-едленно...
     
  7. bul.666

    bul.666 булка

    Joined:
    6 Jun 2006
    Messages:
    719
    Likes Received:
    425
    Reputations:
    140
    Тогда нарушится автонкремент... =\ Смысла в нем исчезает
     
    1 person likes this.
  8. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    м-м-м... вот в firebird/interbase триггер можно сделать...
    а так, действительно, автоинкремент вручную надо делать:
    Code:
    $newN <= SELECT COUNT(N) From `mytable`
    $newN++;
    INSERT INTO `mytable` VALUES ($newN, 'somenewtext');
     
  9. !{ra!{e/\/

    !{ra!{e/\/ Banned

    Joined:
    27 Aug 2007
    Messages:
    98
    Likes Received:
    50
    Reputations:
    3
    я написал сайт....и при удалении какой либ строки предаю гет запросом n и удаляю строку но при этом структура вся меняется....
     
  10. bul.666

    bul.666 булка

    Joined:
    6 Jun 2006
    Messages:
    719
    Likes Received:
    425
    Reputations:
    140
    скажи лучше зачем тебе менять N ?
     
  11. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    "структура вся меняется"
    Куда она меняется-то?
     
  12. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    Убери auto_increment и при добавлении чего-то ставь N + 1, при удалении N -1
    Проблема то =\
     
  13. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    Вот и я про то же... Только всё равно не понимаю, нахрена это надо-то? Так каждое удаление будет всю таблицу перекручивать...
     
  14. !{ra!{e/\/

    !{ra!{e/\/ Banned

    Joined:
    27 Aug 2007
    Messages:
    98
    Likes Received:
    50
    Reputations:
    3
    это так если только я удаляю самую нижнюю строку а если нет то надо по всем нижестоящим $n+1...просто это получаестя не оптимально...придется переписавать некоторые моменты кода..
     
  15. !{ra!{e/\/

    !{ra!{e/\/ Banned

    Joined:
    27 Aug 2007
    Messages:
    98
    Likes Received:
    50
    Reputations:
    3
    просто я написал сайт упираясь на прим кей N вот доделал удаление данных и понял что после удаления все работает некорректно.....
    Значит лучше будет переписать участки кода?да?
     
  16. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Разве это не является одним из принципов реляционной БД?
    С ним не нужно бороться :)
     
  17. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    Либо так, либо... Зачем тебе нужен N? Так если ты его выводишь, то можешь получить номер записи(порядковый) так:
    Code:
    SELECT COUNT(N) FROM `mytable` where N <= (N из твоей записи)
     
    1 person likes this.
  18. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    Мда...у тебя прим.кей id не изменяется при авто_инкремент, а ыт говоришь что после удаления что-то не то упираясь на прим.кей...
    Противоречие получается, правда?

    Ищи ошибку в коде