Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Update trigger - warunek
atomic1234
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 2.08.2010

Ostrzeżenie: (0%)
-----


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()$$


Go to the top of the page
+Quote Post
Mchl
post
Post #2





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

Ostrzeżenie: (0%)
-----


Kod
FOR EACH ROW
  IF NEW.ostatnieLogowanie = OLD.ostatnieLogowanie THEN
    SET NEW.ostatniaModyfikacja=now()
  END IF;
END
Go to the top of the page
+Quote Post
atomic1234
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 2.08.2010

Ostrzeżenie: (0%)
-----


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).

Ten post edytował atomic1234 2.08.2010, 13:03:33
Go to the top of the page
+Quote Post
Mchl
post
Post #4





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

Ostrzeżenie: (0%)
-----


Możesz spróbować

Kod
IF NEW.modyfikowal IS NOT NULL THEN ...
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 03:57