Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] usuwanie wpisów
adasiu
post
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
osiris
post
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
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ę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 15:52