![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 28 Dołączył: 7.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Chciałbym po usunieciu z tabeli jakiegoś rekordu zmniejszy o 1 id rekordów których wartośc jest większa niz tego usnietego czyli: usuwam rekord z id 5 to w rekordzie 6 id zmienia się na 5, w 7 na 6 .... Próbuję to zrobic za pomoca triggera
Mysql wyrzuca 'Unknow system variable "id_pot"'. Oczywiście istnieje pole o nazwie 'id_pot' w tabeli Potencjalni. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Yyy, tak offtopiciem nieco - w jakim celu chcesz zmniejszać ID...? Po czym się potem odwołasz do rekordów?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 28 Dołączył: 7.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
To jest tabela która nie ma relacji, nie jest łączona z danymi z innych tabel. Poprostu chcę aby kolejnośc numerowania była ciągła.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 73 Pomógł: 15 Dołączył: 2.04.2009 Skąd: koszalin Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem jak to zrobic na trigerze:0, ale w zwyklym zapytaniu dałbym to:
(zakładam że znasz to id tu dam przykład z 5) - daj swoje nazwy tabeli i pól
Pozdrawiam Ten post edytował kantek 19.05.2009, 18:40:40 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 28 Dołączył: 7.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
oczywiście jest to rozwiązanie ale :
- po pierwsze chcialem potrenowac tworzenie triggerow (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) - po drugie wiąże sie to z wysłaniem dwóch zapytań. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 405 Pomógł: 6 Dołączył: 12.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
No przecież kantek Ci napisał co zrobic, nie wiem jak w MySQL, bo pisałem triggery w innym SZRBD, ale to powinno byc cos w stylu:
Ten post edytował nieraczek 19.05.2009, 19:21:02 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 28 Dołączył: 7.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Przecież w pierwszym poście napisalem własnie MySql-ową wersję tego co napisaleś czyli dla każdego wiersza w którym id jest większe od id usunietego wiersza ustaw id = id - 1
Chodzi mi o to dlaczego wyrzuca ten komunikat o zmiennej "id_pot" |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 405 Pomógł: 6 Dołączył: 12.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
A gdzie masz zdefiniowana zmienna id_pot ? Poza tym NIE WOLNO nazywac zmiennych tak samo jak nazwy kolumn tabel w bazie danych, bo moga wyjsc na prawde dziwne rzeczy.
Ten post edytował nieraczek 19.05.2009, 19:54:44 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat Poprostu chcę aby kolejnośc numerowania była ciągła. A mógłbys powiedzieć w jakim celu ma być ona ciągła?
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 6.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Ostatnio pisałem skrypt zarządzający użytkownikami i spotkałem się z podobnym problemem. Tzn. bardziej mnie zastanawia, która opcja będzie lepsza/efektywniejsza: 1. Po usunięciu danego rekordu z tabeli (przykładowo jakiegoś usera) zmieniać id pozostałych rekordów, aby właśnie zachować ciągłość. 2. Usunąć rekord i zapomnieć (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) (następny nowy dodawany user będzie miał pierwsze wolne ID, ale nie wiem czy jest to bezpieczne). 3. Usunąć dane z rekordu zostawiając w tabeli jedynie ID. Jak wy rozwiązujecie ten problem? Z góry dzięki za odpowiedź. Pozdrawiam, Max Ten post edytował slimboj 21.05.2009, 09:40:40 |
|
|
![]()
Post
#11
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Żadne z powyższych. Usunąć rekord i o nim zapomnieć ale następny użytkownik nie dostanie pierwszego wolnego id tylko to, które jest następne. Przykładowo: masz użytkowników o id 1, 2, 3. Usuwasz tego z 2 czyli pozostaje 1, 3. Rejestruje się nowy użytkownik i otrzymuje on id = 4, a nie 2.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 6.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ok, napisałem to tak i działa:
Ale jeśli napiszę tak to już nie chce:
Może ktoś podpoiwedzieć, gdzie jest błąd? Albo jak inaczej/efektywniej to napisać? Ten post edytował slimboj 22.05.2009, 11:26:22 |
|
|
![]()
Post
#13
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Może ktoś podpoiwedzieć, gdzie jest błąd? Albo jak inaczej/efektywniej to napisać? Poszukaj w tym dziale mojej odpowiedzi do podobnego tematu. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Najpierw deklarujesz zmienną z wartością maksymalną, potem używasz jej w insert. A jeśli chodzi o ten drugi listing - czemu piszesz auto_increment od nowa...? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 08:37 |