Usuwanie różnicy w bazie MySQL

0

Hej

Głowię się w jaki sposób zniwelować różnicę po usunięciu rekordu z bazy. Mam sporą tabelę ale interesują mnie dwie rzeczy:

id - numer

I mam tam około 40 rekordów, np:

2 - 3
4 - 2
5 - 5
8 - 6
9 - 1
10 - 4
22 - 7

Jak widać, druga kolumna zawiera uporządkowany ciąg od 1 do x. Muszę zadbać aby po usunięciu rekordu usunąć lukę. Idąc dalej na przykładzie usuwam linijkę id 5, czyli zostaje mi w bazie:

2 - 3
4 - 2
8 - 6
9 - 1
10 - 4
22 - 7

I chcę zadbać aby po usunięciu tego rekordu powstała mi taka struktura danych:

2 - 3
4 - 2
8 - 5
9 - 1
10 - 4
22 - 6

Mam nadzieję, że na przykładzie pokazałem o co mi chodzi. Nie chcę używać triggerów dlatego chcę to zrobić kodem PHP.

Czekam na propozycje.

0
UPDATE nazwa_tabeli SET numer = numer - 1 WHERE numer > :numer

W miejscu ':numer' musi być wartość pola numer należącego do usuniętego rekordu

0

Tak jak napisał sirkruk, z tym że: generalnie należy unikać takiej struktury bazy, która wymaga update'u tej samej tabeli po insert/delete. Generuje to niepotrzebny ruch w bazie. Przy 40 rekordach pewnie będzie działać, ale jak Ci się baza rozrośnie i paru userów na raz wywoła taki mechanizm to pozamiatane.

1 użytkowników online, w tym zalogowanych: 0, gości: 1