Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: trigger w mysql a usuwanie plikow z dysku
Forum PHP.pl > Forum > Bazy danych > MySQL
kravczoo
witam!
chcialbym dowiedziec sie, czy istnieje mozliwosc napisania triggera, ktory sprawdzalby ilosc wpisow z konkretnym kluczem w tabeli, a gdy jest ich wiecej, niz X, to usuwal zarowno najstarsze wpisy, jak i pliki, ktore sa z tymi wpisami powiazane?

przypuscmy, ze mam tabele A i tam mam pola:
klucz, tytul, plik
plik - tutaj znajduje sie nazwa pliku, ktory ma zostac wyswietlony na stronie, gdy klucz sie zgadza z tym wyslanym przez skrypt php...
i chodzi o to, zeby zliczyc rekordy o wartosci klucza przypuscmy 1, po czym usunac najstarsze, gdy jest ich wiecej niz X, a zarazem usunac z dysku pliki, ktore sa podane w polu 'plik'...

jezeli napisalem cos niejasno, to prosze o pytania. z gory dziekuje za odpowiedzi. jest to dla mnie bardzo wazne.
Indeo
1)
Jesli mówisz o triggerze co miałoby go wyzwalać? Trigger jest wyzwalany w momencie zajścia okreslonego zdarzenia modyfikacji bazy: w "zdarzeniach" polegających na wpisywaniu, usuwaniu lub update tabeli, tak samo jak javascript obsługuje zdarzenia, omouseover,onclick itd.

2)
Skąd baza ma wiedzieć, które pliki o danej wartości klucza są najstarsze skoro mają tak samą wartość klucza? Chyba przydałoby sie jakies dodatkowe pole, chociazby daty albo jakis autonumer.

3)
Plików z dysku to Ci trigger nie będzie usuwał - trigger moze Ci najwyżej kasować pliki przechowywane binarnie w bazie danych ale mysql nie ma żadnego dostępu do plików, których nazwy są zapisane w jakiejś tabeli. Jesli musisz cos kasować z dysku - to napewno przez php.

4)
Natomiast usuwanie danych przez powiązanie zapewniają klucze obce - foreign keys, które usuwają powiązane rekordy potomne we wszystkich tabelach odpowiednio powiązanych takim kluczem z tabelą z której usuwasz dane. na zasadzie - usuwam ojca - baza usuwa jego dzieci.

5)
trigger to zwykłe zapytanie sql tyle, że wywoływane automatycznie w pewnych okolicznościach.
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.