Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] usuwanie wpisów
adasiu
post 1.08.2008, 09:30:12
Post #1





Grupa: Zarejestrowani
Postów: 65
Pomógł: 7
Dołączył: 18.01.2007
Skąd: Tychy

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


Witam,

Mam pytanko odnośnie usuwania wpisów. Mianowicie mam tabelę z kolumnami id tresc data_dod i jak zrobić żeby w niej zostawiać wpisy tylko z ostatnich 30 dni oraz nie więcej niż tysiąc wpisów według daty dodania. Szukałem na forum ale są rozwiązania jedynie odnośnie czasu a nie ma odnośnie ilości wpisów.

Z góry dzięki za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
osiris
post 2.08.2008, 17:15:36
Post #2





Grupa: Zarejestrowani
Postów: 121
Pomógł: 15
Dołączył: 19.07.2007

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


wystarczy prosta procedura ktorej cialo wyglada tak:

  1. BEGIN DECLARE t INT;
  2. DECLARE current_date DATETIME;
  3.  
  4. SELECT NOW() INTO current_date; SELECT COUNT(*) INTO t FROM tabela WHERE data_dod < (current_date - INTERVAL 30 DAY);
  5.  
  6. IF (t > 1000) THEN
  7. DELETE FROM tabela ORDER BY data_dod LIMIT 1000 ;
  8. ELSE
  9. DELETE FROM tabela WHERE data_dod < (current_date - INTERVAL 30 DAY);
  10. END IF;
  11. END


uzylem tutaj zmiennej current_date do przechowania biezacej daty zamiast uzywac wszedzie funkcji NOW(), dlatego ze funkcja NOW jest funkcja niedeterministyczna i musialaby byc uruchamiana dla kazdego wiersza w tabeli, a tak jest raz - dzieki czemu zyskujemy troszke na szybkosci, szczegolnie w duzych tabelach

UPDATE:
na poczatku zle Cie zrozumialem, dlatego podana przeze mnie procedura usunie 1000 wpisow zamiast usunac x wpisow a zostawic tylko 1000. ale juz poprawienie jej nie powinno dla Ciebie stanowic zadnego problemu.

Ten post edytował osiris 2.08.2008, 17:44:13
Go to the top of the page
+Quote Post
adasiu
post 4.08.2008, 21:59:08
Post #3





Grupa: Zarejestrowani
Postów: 65
Pomógł: 7
Dołączył: 18.01.2007
Skąd: Tychy

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


oczywiście pomogło - plusik dla Ciebie
dziękuję smile.gif
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: 24.07.2025 - 16:13