Wprowadzenie do wyzwalaczy Mariadb i MySQL

Wprowadzenie do wyzwalaczy Mariadb i MySQL

Cel

Zrozumienie i uczenie się używania wyzwalaczy Mariadb i MySQL.

Wymagania

  • Nie wymaga żadnych szczególnych wymagań

Konwencje

  • # - Wymaga podanego polecenia Linuxa, które można było wykonać z uprawnieniami root
    bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
  • $ - Biorąc pod uwagę polecenie Linux, które ma być wykonane jako zwykły użytkownik niepewny

Wstęp

Mysql/Mariadb wyzwalacze są przechowywane programy powiązane z tabelą w bazie danych i używane do automatycznego wykonywania niektórych działań, gdy WSTAWIĆ, USUWAĆ Lub AKTUALIZACJA Wydarzenie odbywa się na stole. Spust można ustawić, aby wykonać akcję przed lub po wydarzenie Jest to związane z. W tym samouczku zobaczymy, jak tworzyć i zarządzać spustem.

Testowa baza danych

Ze względu na ten samouczek utworzymy bazę danych z tylko jedną i bardzo prostą tabelą, z listą książek i ich gatunków. Przejdźmy:

Mariadb [(none)]> Utwórz bazę danych Book_test; Mariadb [(brak)]> Utwórz tabelę książki_test.książka ( -> id SmallItt (1) Unsigned Not Null Auto_increment, -> Nazwa varchar (25) nie null, -> gatunek varchar (25) nie null, -> klucz podstawowy (id)); 
Kopiuj

Stworzyliśmy nasz trywialny stół, teraz powinniśmy go zapełnić kilkoma książkami. Oto niektóre z moich ulubionych:

Mariadb [(brak)]> Użyj Book_Test; Mariadb [book_test]> wstaw do książki (nazwa, gatunek) wartości -> („1984”, „dystopian”), -> („The Lord of the Rings”, „Fantasy”), -> („O Genealogii of Of of of the Genealogy of of of of of of of of the Moralność ”,„ Filozofia ”); 
Kopiuj

To wystarczy na nasz przykład. Oto wizualna reprezentacja naszej tabeli:

+----+---------------------------+------------+ |. Id | Nazwa | gatunek | +----+---------------------------+------------+| 1 | 1984 | Dystopian | |. 2 | Władca pierścieni | Fantasy | |. 3 | O genealogii moralnej | Filozofia | +----+---------------------------+------------+ 
Kopiuj

Teraz, gdy przygotowaliśmy naszą tabelę testową, możemy zobaczyć, jak tworzyć i skojarzyć spust do tego.

Utwórz spust

Jak powiedziano wcześniej, tworząc spust, możemy pozwolić naszej bazie danych automatycznie wykonywać określoną akcję, gdy określone zdarzenie, które może być jednym z nich WSTAWIĆ, AKTUALIZACJA Lub USUWAĆ, wykonuje się na stole. Powiedzmy na przykład, że z jakiegoś dziwnego powodu nie chcemy zezwolić na więcej niż jedną książkę filozoficzną w naszej kolekcji, jak możemy egzekwować tę zasadę? Chociaż ograniczenie można wdrożyć na wyższym poziomie, możemy ustawić je bezpośrednio w bazie danych, za pomocą wyzwalacza. Składnia do utworzenia jednego jest bardzo łatwa:

Utwórz Trigger Trigger_name # Przypisz nazwę do spustu przed | Po # ustaw, gdy należy wykonać spust wstaw | Usuń | Aktualizacja # Ustaw instrukcję powiązaną z wyzwalaczem na nazwie Table_name # Ustaw tabelę powiązaną z wyzwalaczem dla każdego wiersza Trigger_stmt # Zadekstaj ciału wyzwalacza 
Kopiuj

Po powyższej składni możemy utworzyć nasz spust:

Mariadb [book_test]> delimiter $ mariadb [book_test]> Utwórz wyzwalacz no_more_philosophy przed wstawieniem na book_test.Książka -> Za każdy wiersz rozpoczyna się -> Jeśli nowy.gatunek = „Philosophy” i (wybierz hrabia (*) z book_test.Zarezerwuj gdzie gatunka = "filozofia")> 0, a następnie -> sygnał sqlstate '45000' Set Message_Text = '!';; -> koniec, jeśli; -> END $ mariadb [book_test]> delimiter; 
Kopiuj

Pierwszą rzeczą, którą zrobiliśmy w wierszu 1, jest pouczenie bazy danych, aby użyć $ postać jako ograniczenie instrukcji zamiast domyślnego ;. Wynika to z faktu, że ograniczenie półkolonu będzie używane w korpusie spustu.

Następnie utworzyliśmy spust za pomocą Utwórz spust stwierdzenie w wierszu 2, a następnie nazwa Chcemy to przypisać: „no_more_philosophy” w tym przypadku. Następnie określiliśmy, że spust należy wykonać ZANIM WSTAWIĆ oświadczenie. Zaraz potem powiązaliśmy spust z tabelą „książki”.

Ciało spustu zaczyna się od Dla każdego wiersza w wierszu 3: Użyliśmy ZACZYNAĆ Aby zaznaczyć początek naszych złożonych instrukcji, te, które należy wykonać, gdy wywołuje wyzwalacz, i zaznaczyliśmy koniec KONIEC, Tak jak my z innymi procedurami.

Po powiązaniu spustu z tabelą będzie działać przed wykonaniem każdego wprowadzenia wiersza.

Kiedy wykonuje się spust, dwa Pseudorecords są zaludnione: STARY I NOWY: Przypisane im wartości różnią się w zależności od typu zdarzenia. Na WSTAWIĆ stwierdzenie, ponieważ rząd jest nowy, STARY pseudorecord nie będzie zawierać żadnych wartości, a NOWY będzie zawierać wartości nowego wiersza, które należy wstawiać. Odwrotnie nastąpi dla USUWAĆ Instrukcja: stare będzie zawierać stare wartości, a nowy będzie pusty. Wreszcie dla AKTUALIZACJA Oba zostaną wypełnione, ponieważ stare będą zawierać stare wartości wiersza, podczas gdy nowe będą zawierać nowe.

Nasz wyzwalacz w wierszu 4 sprawdzi wartość gatunek muzyczny kolumna dla nowego wiersza (zidentyfikowana przez NOWY): Jeśli zostanie ustawiona na „filozofię”, zapytanie o książki z gatunkiem „filozofii” i sprawdź, czy przynajmniej jeden już istnieje. Jeśli tak jest, podniesie wyjątek z przesłaniem „Dozwolona jest tylko jedna książka filozoficzna!'.

Jako ostatnia rzecz w wierszu 8 odkładamy ogranicznik ;.

Nasz spust w akcji

Sprawdźmy nasz spust w akcji: spróbujemy wstawić nową książkę z gatunkiem „filozofii” i zobaczymy, co się stanie:

Mariadb [book_test]> Wstaw do książki (nazwa, gatunek) wartości („Republic”, „Philosophy”); Błąd 1644 (45000): dozwolona jest tylko jedna książka filozoficzna! 
Kopiuj

Jak widać, wyzwalacz działał, a serwer odpowiedział komunikatem o błędzie, który ustawiliśmy, gdy próbowaliśmy dodać kolejną książkę filozoficzną do naszej kolekcji.



Zarządzaj wyzwalaczami

Aby sprawdzić wyzwalacze w bazie danych, musimy tylko uruchomić Pokaż wyzwalacze Komenda:

Mariadb [book_test]> show wyzwalacze \ g; ***************************** 1. Rząd *************************.gatunek = „Philosophy” i (wybierz hrabia (*) z book_test.Zarezerwuj gdzie gatunka = „filozofia”)> 0, a następnie sygnał sqlstate '45000' Set Message_Text = 'Dozwolony jest tylko jedna książka filozoficzna!';; Zakończyć, jeśli; Koniec czasu: Przed utworzeniem: null sql_mode: no_auto_create_user, no_engine_substitution definiator: root@localHost Character_client: Latin1 Collation_Connection: Latin1_Swedish_ci baza danych: Latin1_Swedish_ci 
Kopiuj

Upuszczenie spustu jest równie proste: wszystko, co musimy zrobić, to odwołać się do wyzwalacza po nazwie. Na przykład, jeśli chcielibyśmy usunąć spust „no_more_philosophy”, powinniśmy uruchomić:

Mariadb [book_test]> upuść wyzwalacz no_more_philosophy;

Jeśli znamy zapytanie o bazę danych dotyczących istniejących wyzwalaczy, otrzymujemy pusty zestaw:

Mariadb [book_test]> show wyzwalacze; Pusty zestaw (0.01 s) 

Wnioski

W tym samouczku dowiedzieliśmy się, czym jest spust, i składnia, którą należy użyć do utworzenia. Stworzyliśmy również trywialną tabelę i powiązaliśmy z nim wyzwalacz, widząc, jak można go użyć, aby zapewnić określoną regułę. Wreszcie widzieliśmy, jak możemy sprawdzić istniejące wyzwalacze w bazie danych i jak możemy je usunąć. Chociaż powinno to wystarczyć, aby zacząć, możesz sprawdzić oficjalną dokumentację Mariadb/MySQL, aby uzyskać bardziej szczegółową wiedzę.

Powiązane samouczki Linux:

  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Zainstaluj MySQL na Ubuntu 20.04 LTS Linux
  • Mastering Bash Script Loops
  • Jak zainstalować MySQL na Almalinux
  • Ubuntu 20.04 WordPress z instalacją Apache
  • Instalacja OpenLitespeed WordPress
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Instalacja Ampache Raspberry Pi
  • Ubuntu 20.04: WordPress z instalacją Nginx