Uczenie się wyzwalaczy Mariadb

Uczenie się wyzwalaczy Mariadb

Jak używać wyzwalaczy w MariaDB

Wyzwalacz to procedura, która jest automatycznie zwolniona, gdy jakakolwiek modyfikacja jest wykonywana w tabeli bazy danych. Nie ma opcji ręcznego wywoływania lub wykonania żadnego wyzwalacza. Głównym celem stosowania wyzwalaczy jest utrzymanie integralności bazy danych i można ją używać z ograniczeniami integralności referencyjnej, które wymuszają reguły integralności. W DBMS, gdy wystąpi dowolne zdarzenie wkładki, aktualizacji i usuwania, wówczas procedura wyzwalająca powiązana z wytworzoną tabelą zostanie wykonana automatycznie i wykonuje wymagane działania. Baza danych jest obsługiwana przez różne typy wyzwalaczy. Wyzwalacze są głównie podzielone na dwa sposoby. Jeden jest przed spustem, a drugi po wyzwoleniu. Przed wywołaniem wyzwalaczy przed wykonaniem jakiegokolwiek wydarzenia w tabeli i po wywołaniu wyzwalaczy po wykonaniu dowolnego zdarzenia w tabeli. Jak instalujesz Mariadb i stosować różne typy wyzwalaczy na serwerze bazy danych Mariadb na Ubuntu, jest pokazany w tym samouczku.

Instalacja Mariadb:

Uruchom poniższe polecenie, aby zaktualizować system i zainstalować serwer MariaDB i klient.

# sudo apt-get aktualizacja && sudo apt-get instaluj mariadb-server mariadb-client

Typ 'y ' i naciśnij Enter, aby zakończyć proces instalacji.

Uruchom następujące polecenie, aby uruchomić serwer MARIADB.

# sudo systemctl start mariadb

Sprawdź, czy serwer działa poprawnie lub nie. Wyjście następującego polecenia wyświetli status szczegółowych informacji serwera. Wyjście wskazuje, że Mariadb 10.1.30 Verion działa.

# sudo systemCtl status mariadb

Uruchom następujące polecenie, jeśli chcesz zatrzymać serwer. Nie uruchamiaj teraz tego polecenia.

# sudo systemCtl Stop Mariadb

Skonfiguruj bazę danych i tabele

Musisz utworzyć bazę danych i dwa lub więcej tabel, aby sprawdzić, jak działają wyzwalacze. Przede wszystkim uruchom klienta MySQL, aby skonfigurować bazę danych. Poprosi o hasło root, aby uzyskać dostęp do serwera bazy danych.

# sudo mysql -u root

Utwórz nazwaną bazę danych sklep.

> Utwórz sklep z bazami danych;

Wybierz tę nową bazę danych:

> Użyj sklepu;

Utwórz trzy tabele w sklep baza danych do zastosowania działań wyzwalających na nich. Tutaj, produkty, stock i stock_add Tabele są tworzone.

Utwórz produkty stołowe
(ID int (11),
Nazwa varchar (30) nie null,
cena int (11),
Klucz podstawowy (id)
);
Utwórz zapasy tabeli
(produkt_id int (11),
Otwarcie_stock int (11),
current_stock int (11),
Klucz podstawowy (produkt_id)
);
Utwórz tabelę stocks_add
(produkt_id int (11),
data entry_date,
ilość int (11),
Klucz podstawowy (produkt_id, entent_date)
);

Teraz wstaw dane w tych trzech tabelach.

Produkty:

Wstaw do Produkty Set Id = 101, name = "Bag", Cena = 1000;
Wstaw do produktów SET ID = 102, name = „Pen”, cena = 100;
Wstaw do Produkty Set Id = 103, name = „Pencil”, cena = 50;

dyby:

Wstaw do zapasów Ustaw produkt_id = 101, otwieranie_stock = 200, current_stock = 100;
Wstaw do zapasów Ustaw produkt_id = 102, otwieranie_stock = 230, current_stock = 150;
Wstaw do zapasów Ustaw produkt_id = 103, otwieranie_stock = 220, current_stock = 300;

stocks_add:

Wstaw do stocks_add set sett_id = 103, entent_date = "2018-01-01", ilość = 30;
Wstaw do stocks_add set sett_id = 103, entent_date = "2018-01-02", ilość = 50;
Wstaw do stocks_add set sett_id = 103, entent_date = "2018-01-03", ilość = 45;

Utwórz za spustem

Możesz utworzyć po wyzwalaniu, aby wykonać dowolne działanie automatycznie po włożeniu lub aktualizacji lub usunięciu rekordów określonej tabeli. Tutaj, produkty I dyby Tabele są wybierane do utworzenia po usunięciu wyzwalacza. Dane ze stocka zależy od danych z tabeli produktów. Więc jeśli jakikolwiek rekord zostanie usunięty z tabeli produktów, należy usunąć powiązane zapisy stockowe. Utwórz następującą procedurę wyzwalacza, aby automatycznie usunąć dowolny powiązany rekord z tabeli magazynów, gdy jakikolwiek rekord zostanie usunięty z tabeli produktów. W tym spustu usunięty identyfikator jest rozpoznawany przez stary.ID.

Delimiter //
Utwórz Trigger Products_After_Delete
Po usunięciu
Na produktach dla każdego rzędu
ZACZYNAĆ
Usuń z zapasów, gdzie produkt_id = stary.ID;
KONIEC;
//


Po utworzeniu spustu dla tabeli produktów. Teraz musisz przetestować, że wyzwalacz działa poprawnie lub nie. Uruchom następujące zapytanie, aby usunąć rekord z produktów, gdzie ID Jest 101 i sprawdź dane zarówno tabel produktów, jak i zapasów. Po wykonaniu zapytania przekonasz się, że powiązany rekord magazynu jest usuwany przez wyzwalacz. Brak rekordu wartości identyfikacyjnej, 101, zostanie znaleziony w obu tabelach.

> Usuń z produktów, w których id = 101;
> Wybierz * z produktów;
> Wybierz * z zapasów;

Utwórz przed wyzwalaczami

Przed użyciem wyzwalacza do podjęcia jakichkolwiek działań przed wstawieniem lub aktualizacją lub usunięciem dowolnego lub więcej rekordów z określonej tabeli. Tutaj, dyby I stocks_add Tabela służy do tworzenia przed wyzwalaczem. Wartość Tabeli Current_stock Stocks zależy od wartości ilościowej tabeli Stocks_Add. Jeśli zaktualizujesz jakąkolwiek wartość ilościową tabeli Stocks_ADD, należy aktualizować Current_stock tabeli Stocks. Więc jeśli jakakolwiek istniejąca wartość ilościowa tabeli Stocks_Add zmniejszy się, wówczas prąd_stock zapasów zostanie zmniejszony, a jeśli wartość ilościowa wzrośnie, wówczas zostanie zwiększony. Utwórz przed aktualizacją Trigger dla tabeli Stocks_Add. W tym spustu zmieniona wartość ilościowa jest obliczana przez odjęcie starej ilości od nowej ilości.

Delimiter //
Utwórz wyzwalacz Stocks_Before_update
Przed aktualizacją
Na stocks_add dla każdego wiersza
ZACZYNAĆ
Aktualizacja zapasów Ustaw current_stock = current_stock+(nowy.ilość.ilość)
Gdzie produkt_id = stary.ID produktu;
KONIEC;
//

Przed aktualizacją sprawdź bieżące wartości zarówno zapasów, jak i tabel Stocks_ADD.

> Wybierz * z zapasów;
> Wybierz * z stocks_add;


Załóżmy, że musisz zaktualizować wartość ilościową tabeli stocks_add, gdzie ID produktu Jest 103 I Wprowadź dane Jest 2018-01-01 który jest 30 Teraz. Jeśli chcesz zaktualizować wartość według 75 Następnie uruchom następujące zapytanie aktualizacji i ponownie sprawdź oba tabele. Zwiększona ilość wynosi 75-30 = 45. Tak więc po aktualizacji wyzwalacz zostanie zwolniony, a Tabela Current_stock of Stocks zostanie ustawiona jako 300+45 = 345.

Aktualizacja Stocks_Add Set Ilości = 75 gdzie produkt_id = 103 i entent_date = "2018-01-01";
> Wybierz * z zapasów;
> Wybierz * z stocks_add;

Zastosowanie dwóch rodzajów wyzwalaczy pokazano w tym samouczku. W podobny sposób możesz tworzyć inne rodzaje przed i po uruchomieniu tabel bazy danych w oparciu o Twoje wymagania.