Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Ograniczenie liczby rekordów w tabeli
l0ud
post 19.08.2008, 21:45:45
Post #1





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


Cześć. Załóżmy, że mam tabelę, której jedyną kolumną jest identyfikator (auto_increment). Chcę, by do tabeli nie dodawało się więcej niż 10 rekordów - nowe pozycje mają 'zastępować' stare. Nie wiem niestety, jak najwydajniej to zrobić. Pomyślałem, żeby przy dodawaniu nowej pozycji podliczyć zapytaniem liczbę rekordów - jeżeli byłaby za duża wykonywałoby się zapytanie pobierające najmniejszy identyfikator, a następnie usuwające pozycję go posiadającą. Jest to jednak rozwiązanie co najmniej nieeleganckie i niewydajne.
Czy da się to zrobić w jakiś lepszy sposób? smile.gif

Pozdrawiam


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
dr_bonzo
post 19.08.2008, 21:53:37
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Trzymaj w innym miejscu pozycje [id: 1,2 ... 10] na ktora masz wstawic rekord. Po wstawieniu, inkrementujesz, jak dojdziesz do 11tu to zamieniasz na 1 itd


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
l0ud
post 19.08.2008, 22:00:36
Post #3





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

Ostrzeżenie: (0%)
-----


Zapomniałem napisać chyba najistotniejszego - istnieje możliwość usuwania rekordów z tej tabeli. To komplikuje tą metodę sad.gif


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
JoShiMa
post 20.08.2008, 10:33:33
Post #4





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


Mozesz próbować używać w stosunku do tej tabeli triggera, ale w MySQLu to jeszcze chyba nie działa dobrze. Po drugie zamiast kasować post z określonym id po prostu zmieniaj jego zawartość. czyli sprawdzasz ile masz w bazie wpisów jeśli <10 to INSERT jeśli == 10 to UPDATE. Taki sam warunek możesz zaszyć w triggerze jeśli uda ci się go uruchomić w Twojej wersji bazy.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 26.06.2025 - 19:43