Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Trigger, przeliczanie i aktualizacja
Forum PHP.pl > Forum > Bazy danych > MySQL
SaMi
Witam, na początek przedstawię swój zamiar, otóż:
chcę stworzyć dział z plikami do pobrania mam przygotowane dwie tabele jedna to KATEGORIE druga to PLIKI. Chcę przy wyświetlaniu kategorii wyświetlić ile plików jest do danej kat. przypisana. W tym celu w tabeli kategorie stworzyłem pole ilosc_plikow. Które chcę aktualizować przy każdorazowym dodaniu nowego pliku do tabeli PLIKI. Do tego tak mi się przynajmniej wydaje będzie najlepiej nadawał się trigger. Teraz pytanie, czy jest to poprawny zapis ponieważ jest to mój pierwszy kontakt z Triggerami:

  1. DELIMITER //
  2. CREATE TRIGGER przelicz AFTER INSERT ON pliki_do_pobrania
  3. FOR EACH ROW
  4. BEGIN
  5. SELECT COUNT(*) INTO @ile FROM pliki_do_pobrania WHERE kategoria = NEW.kategoria;
  6. UPDATE pliki_kategorie SET ilosc_kat=@ile;
  7. END;//
Crozin
IIRC w MySQL zmienne zadeklarowane przy użyciu @ są zmiennymi sesyjnymi o globalnym zasięgu - raczej nie powinieneś ich tu używać - skorzystaj z DECLARE. Chociaż na dobrą sprawę mógłbyś zrobić:
  1. UPDATE pliki_kategorie SET ilosc_kat = (SELECT ...) WHERE id = NEW.kategoria;
Chociaż w sumie i to jest nieco przekombinowane bo wystarczy po prostu zwiększyć wartość w tej kolumnie o jeden:
  1. UPDATE pliki_kategorie SET ilosc_kat = ilosc_kat + 1 WHERE id = NEW.kategoria;
SaMi
Dzięki, niestety okazało się nazwa.pl gdzie mam konto ma zablokowane dostęp do super użytkownika przez co nie ma dostępu do triggerów i wielu innych dobrodziejstw mysql5.
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.