![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 3 Dołączył: 2.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam problem z zamiana 2 wierszy, mianowicie zmienia mi się wszystko oprócz id. Zrobiłem dla tego celu osobne zapytanie ale nic się nie dzieje.
Czy coś tu jest nie tak? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Taaaa... I jeszcze powiedz, że masz na id ustawiony klucz primary autoincrement... Zgadłem? Wiesz co to powoduje czy nie wiesz o czym mówię? Bo jeśli masz tak ustawione to cud, że Ci pozwoliło na zamianę 3 na 4 już choćby raz. Primary zabrania stosować w kolumnie dwóch identycznych wartości w różnych wierszach. W takim wypadku należy więc lecieć ze zmianą nie od przodu bo Ci wywali zapytanie gdyż w jednym momencie pojawią się dwa wiersze z identyczną wartością. W takie sytuacji modyfikujesz parametr autoincrement tablicy zwiększając go o tyle o ile przesuwasz, a numery posuwając się od ostatniego ku pierwszemu, bo nigdy wtedy nie nastąpi zduplikowanie indeksu. Czyli przesuwasz wszystko o 4 w górę to autoincrement zwiększasz o 4 a rekordy lecąc od tyłu też o 4 robiąc update na tej kolumnie. Tak jak opisałeś, czyli idąc od najmniejszego można by zrobić gdybyś zmniejszał id, bo wtedy po odjęciu nie nastąpi duplikacja indeksu. Ale trochę myślenia perspektywicznego jak widać Ci brakuje i nie przewidujesz jak to wpłynie na bazę.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 8.10.2025 - 17:01 |