Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL] cykliczne czyszczenie tabeli
Forum PHP.pl > Forum > Przedszkole
lnn
mam takie pytanko, chcialbym zrobic sobie jedna tabele, ktora przechowywalaby dane wprowadzone przez uzytkownikow ktore potem sa weryfikowane przed administratora (dodawane lub usuwane) i tutaj pytanie:
jak zrobić żeby rekordy z tabeli do weryfikacji kasowaly sie cyklicznie np co iles dni i jak uchronic przed skasowaniem dane ktore zostaly niedawno wprowadzone
np wpis dnia 1-ego po 30 dniach zostaje usniety, natomiast wpis dodany 30 dnia zeby usuwalo dopiero po 30stu dniach od dodania - moze przy dodawaniu rekordu zeby dodawalo date dodania a potem zeby skrypt sprawdzal ile dni minelo i sam usuwal, czy wygodniejsze bedzie dodanie w panelu administracyjnym opcji np "czysc tabele tymczasowa"? ktora manualnie bedzie musiala byc wywolywana..
slawny
Zrób w bazie dodatkową kolumnę data_usuniecia i tyle
lnn
hmmm i podczas dodawania rekordu zeby do aktualnej daty dodawalo 30 dni?
slawny
No ja bym to chyba tak rozwiązał, rozwiązania najprostsze bywają najlepsze. Ale poczekaj może ktoś podrzuci inne, lepsze rozwiązanie.
Crozin
Jeżeli limit 30 dni jest stały dla wszystkich rekordów to wystarczy usunąć te rekordy, których data dodania jest mniejsza od aktualnego czasu minus 30 dni. Jeżeli datę dodania masz w formacie UNIX_TIMESTAMP, to:
  1. DELETE FROM tbl_name WHERE created_at < {time() - 3600 * 24 *30};
Jeżeli jako DATETIME
  1. DROP FROM tbl_name WHERE created_at < DATE_SUB(NOW(), INTERVAL 30 DAY);
A zapytanie to możesz wykonywać np. przed pobraniem listy rekordów do wyświetlenia.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.