Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 8.07.2006 Ostrzeżenie: (0%)
|
Witam
Tworze pewna baze danych z tabela przechowujaca uzytkownikow oraz uslugi, ktore ci uzytkownicy beda posiadac. Problem jest w tym, ze tych uslug bedzie wiele, tysiace dla kazdego uzytkownika, ktory bedzie je sobie mogl dodawac i usuwac. Chce, aby uzytkownikowi numeracja uslug leciala od poczatku np. usluga#1, usluga#2 a nie jak w przypadku nextval() usluga#2831381. Napisalem prosta funkcje w plpgsql:
i teoretycznie dziala, jednak przy dodawaniu rekordu musze wklepywac:
rozumiem, ze nie da sie zrobic czegos w stylu:
(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Oprocz tego funkcja ta nie dziala dokladnie tak samo jak nextval gdyz podaje wartosc ostatniego id powiekszona o jeden, nie uwzgledniajac czy uzytkownik mial juz jakies uslugi i je wykasowal (po zwolnieniu sie identyfikatorow nie powinny one byc brane pod uwage). Czy ktos ma jakies lepsze rozwiazanie tego problemu? Pozdrawiam |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%)
|
Oprocz tego funkcja ta nie dziala dokladnie tak samo jak nextval gdyz podaje wartosc ostatniego id powiekszona o jeden, nie uwzgledniajac czy uzytkownik mial juz jakies uslugi i je wykasowal (po zwolnieniu sie identyfikatorow nie powinny one byc brane pod uwage). Przecież praca na sekwencjach też nie uwzględnia usuwania rekordów więc nie wiem o czym teraz piszesz. Ogólnie jak się upierasz przy tym numerowaniu (bo moim zdaniem nie ma sensu bawić się czy to będzie usługa#2098 czy usługa#190, no chyba że tak masz w specyfikacji), to masz prostą sytuacje, dla każdego użytkownika musisz mieć osobną sekwencję. I ja widzę teraz dwa rozwiązania, albo tworzysz dla każdego użytkownika sekwencję postgresową, albo tworzysz swój mechanizm sekwencji, czyli np. tabela z kolumnami user_id|seq i w seq przechowujesz niewykorzystany identyfikator. (oczywiście najlepiej obsługę tego zamknąć w funkcje) |
|
|
|
Helios nextval() dla kazdego uzytkownika osobno 17.10.2008, 21:58:19 
Helios Cytat(Sedziwoj @ 18.10.2008, 12:17:14... 18.10.2008, 19:56:10
Sedziwoj A jak będą wykorzystane 1, 2, 3, 4 i usunie 3? Rob... 18.10.2008, 22:13:43 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 14:00 |