Przydatny trigger - historia warning'ów i access'ów
Witam, Ostatnio wyłączyłem kilka osób za niepłacenie. Pozostało pytanie czy zostaje jakiś ślad kiedy taka osoba została wyłączona lub ma warning? 30 minut i jest :) wpisy pojawiają sie w polu location dla każdego kompa. ( do działania potrzeba mysql 5.0 lub wyżej - z obsługą triggerów oczywiście )
Poprawki mile widziane ( do zrobienia napewno jakiś ogranicznik dla ilości wpisów ) , pozdrawiam Miłosz.
use lms; create trigger trigger1 BEFORE UPDATE ON nodes FOR EACH ROW BEGIN
if old.warning <> new.warning then
IF NEW.warning=0 THEN SET NEW.location = concat(NEW.location, "wylaczony warning ", now(), "<br>" ) ; end if;
IF NEW.warning=1 THEN SET NEW.location = concat(NEW.location, "<b>wlaczony warning</b> ", now() , "<br>" ) ; end if;
end if;
if old.access <> new.access then
IF NEW.access=0 THEN SET NEW.location = concat(NEW.location, "<b>wylaczony access</b> ", now(), "<br>" ) ; end if;
IF NEW.access=1 THEN SET NEW.location = concat(NEW.location, "wlaczony access ", now() , "<br>" ) ; end if;
end if;
end
__________ Informacja programu ESET Smart Security, wersja bazy sygnatur wirusow 4519 (20091018) __________
Wiadomosc zostala sprawdzona przez program ESET Smart Security.
Troche zmienione dla postgres. A i pole location jest od zupelnie czego innego wiec uzylem pola info, co mniemam bedzie bardziej poprawne
CREATE FUNCTION emp_stamp() AS ' BEGIN IF (OLD.access = 1 AND NEW.access = 0) THEN NEW.info := NEW.info || '<b>access OFF ' || lms_current_user() || ' ' || now() || '</b><br>'; END IF; IF (OLD.access = 0 AND NEW.access = 1) THEN NEW.info := NEW.info || '<b>access ON ' || lms_current_user() || ' ' || now() || '</b><br>'; END IF; RETURN NEW; END; ' LANGUAGE 'plpgsql';
CREATE TRIGGER emp_stamp BEFORE UPDATE ON nodes FOR EACH ROW EXECUTE PROCEDURE emp_stamp()
Mogą być błędy bo orginalny sql do bazy mnie wciolo i musialem tworzyc na nowo
uczestnicy (2)
-
Miłosz Szewczak
-
Waldemar Dymkiewicz