Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Update trigger - warunek
Forum PHP.pl > Forum > Przedszkole
atomic1234
Cześć, mam w bazie trigger on update, który zmienia mi pole ostatniaModyfikacja, gdy jest zmieniany rekord. I jak ktoś sobie zmienia np. e-mail, to pole mi się fajnie aktualizuje. Teraz dołożyłem pole: ostatnieLogowanie, które zmieniam, gdy użytkownik się zaloguje i naturalnie nie chciałbym, aby wtedy aktualizowało się pole ostatniaModyfikacja...

Czy w triggerze można dać warunek, w którym zdefiniuję "jeżeli zmieniasz pole inne niż ostatnie logowanie" to kontynuuj...

Nie umiałem tego zdefiniować w wyszukiwarce to się zarejestrowałem party.gif

Wrzucę na wszelki wypadek kod triggera:

  1. CREATE TRIGGER pracownicy_m BEFORE UPDATE ON pracownicy
  2. FOR EACH ROW SET NEW.ostatniaModyfikacja=now()$$


Mchl
Kod
FOR EACH ROW
  IF NEW.ostatnieLogowanie = OLD.ostatnieLogowanie THEN
    SET NEW.ostatniaModyfikacja=now()
  END IF;
END
atomic1234
A w ten sposób winksmiley.jpg Dzięki wielkie

Hmm, tylko jest problem, bo mając załóżmy w innej mojej tabeli 10 pól, których aktualizacja powinna spowodować zmianę czasu i 10 pól, których aktualizacja nie powinna spowodować zmiany to musze każde pole dopisać do warunku...

Mógłbym zrezygnować z triggerów, ale to trochę utrudnia sprawę, a fajne jest to, że czas zostanie zaktualizowany wtedy, gdy pole się rzeczywiście zmieni, a nie wykonam UPDATE z tą samą wartością.

Ale zawsze jak czas powinien się zaktualizować to w zapytaniu mam wyrażenie modyfikowal='$_SESSION["idPracownika"]'?
Czy w warunku mogę jakoś zawrzeć, czy mam w zapytaniu UPDATE tą frazę? Tzn. , że próbuję zaktualizowć pole modyfikowal (choć pracownik może modyfikować 2 razy z rzędu, wartość się nie zaktualizuje, a czas powinien).
Mchl
Możesz spróbować

Kod
IF NEW.modyfikowal IS NOT NULL THEN ...
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.