Spisie treści
Stwierdzenie, które tworzy wyzwalacz, toCREATE TRIGGER nazwa_wyzwalacza czas zdarzenia W tabeli W KAŻDYM RZĘDZIE
Za chwilę
Może to nastąpić PO lub PRZED, czyli po lub przed wystąpieniem zdarzenia sql, takiego jak utworzenie rekordu, usunięcie, zaznaczenie, wyszukiwanie, modyfikacja itp.
Wydarzenie
Każdą z operacji sql nazywamy zdarzeniem, może to być INSERT, UPDATE lub DELETE. Nie można dokonywać selekcji z wyzwalaczy (Wybierz * z…) ta operacja jest wykonywana z procedur przechowywanych, a nie z wyzwalaczy.
Ogólne instrukcje i polecenia do zarządzania wyzwalaczami lub wyzwalaczami
Tworzymy wyzwalacz do audytu w sprzedaży agencji samochodowej, za każdym razem, gdy operator lub sprzedawca modyfikuje dane klienta, automatycznie w tabeli audits_cliente wskażemy datę i godzinę kto dokonał zmiany a kto jest klientem który został zmodyfikowany
CREATE TRIGGER client_audit_trigger PO ZAKTUALIZOWANIU KLIENTÓW DLA KAŻDEGO WIERSZU WSTAWIĆ client_audit (clientid, updated_by, data) WARTOŚCI (STARY.clientid, NEW.idoperator, TERAZ ())Przeszukuj wszystkie wyzwalacze dostępne w bazie danych
Pokaż wyzwalaczeW tym przypadku ten, dla którego tworzymy audyt klienta i widzimy jego funkcjonalność w różnych kolumnach, zdarzenie aktualizacji w tabeli klienci, które dokona wstawienia a jego administratorem jest root
Usuń wyzwalacz z bazy danych
DROP TRIGGER nazwa wyzwalacza
Jak wywoływać procedury składowane w wyzwalaczu
Przeanalizujemy przykład dla bazy produktów i że generując sprzedaż sprzedawca musi również generować prowizję, którą zarabia, to prowizję od sprzedaży trzeba zaktualizować po wstawieniu lub wygenerowaniu nowej sprzedaży lub może to być również po wygenerowaniu faktury , w zależności od modelu biznesowego, który ma zostać opracowany, ale wystarczy, aby przykład był zrozumiały.
Tworzymy procedurę składowaną, która nalicza prowizję na podstawie ilości sprzedanego produktu.
DELIMITER $$ CREATE PROCEDURE pa_commission` (IN p_vendor ID INT, IN p_product ID INT, IN ilość INT) BEGIN DECLARE totalcommission INT DEFAULT 0; Wybierz prowizję z produktów, gdzie productid = p_productid; totalcommission = prowizja * p_amount wstawić do wartości prowizji (seller, prowizja) (sellerid, productid, prowizja, totalcommission); KONIEC $$ DELIMITER $$
Teraz tworzymy nowy wyzwalacz sprzedaży. Ten wyzwalacz zostanie wykonany po wstawieniu sprzedaży i pobraniu danych tego lub szczegółów sprzedaży.
UTWÓRZ AKTYWATOR nowej sprzedaży PO WSTAWIĆ informacje o sprzedaży DLA KAŻDEGO WIERSZU POCZĄTEK ZADZWOŃ pa_commissions (sprzedawca new.id, new.idproduct, new.quantity); KONIEC $$
Widzimy, że procedura przechowywana jest wywoływana, aby móc zapoznać się z danymi produktu, prowizją i tym samym móc automatycznie obliczyć kwotę prowizji.
Moglibyśmy też ją bardziej skomplikować, pozwalając sprawdzić, czy prowizja i sprzedaż już istnieją, a następnie ją zmodyfikować i nie wstawiać ponownie.
Do tego należy również rozpoznać numer sprzedaży lub faktury, wtedy szukamy czy produkt już istnieje w numerze sprzedaży i sprzedawcy, to znaczy, że już istnieje i został zlecony, dlatego zmodyfikujemy a nie wstawimy jako nową sprzedaż.
wybierz liczbę (id_produktu)> 0 do już istnieje z prowizji, gdzie id_sprzedawcy = id_sprzedaży i id_sprzedaży = id_sprzedaży; jeśli już istnieje, to UPDATE prowizje ustaw prowizję = totalcommission gdzie idsprzedawcy = idsprzedaży i idsprzedaży = idsprzedaży; w przeciwnym razie wstaw do prowizji (seller, prowizja) wartości (sellerid, productid, prowizja, totalcommission); koniec jeśli;Podobał Ci się i pomógł ten samouczek?Możesz nagrodzić autora, naciskając ten przycisk, aby dać mu pozytywny punkt