Wprowadzenie do wyzwalaczy Mariadb i MySQL
- 2639
- 314
- Juliusz Janicki
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
- « Jak połączyć wyniki wielu zapytań SQL za pomocą instrukcji Unii
- Jak stworzyć gorący tryb gotowości z PostgreSQL »