Einführung in Mariadb und MySQL Triggers

Einführung in Mariadb und MySQL Triggers

Zielsetzung

Verstehen und Lernen, Mariadb und MySQL Triggers zu verwenden.

Anforderungen

  • Keine besonderen Anforderungen erforderlich

Konventionen

  • # - Erfordert, dass der Befehl gegebener Linux entweder mit Root -Berechtigungen ausgeführt werden muss
    direkt als Stammbenutzer oder durch Verwendung von sudo Befehl
  • $ - Der Befehl Linux wird als regelmäßiger nicht privilegierter Benutzer ausgeführt

Einführung

Mysql/Mariadb löst aus sind gespeicherte Programme, die einer Tabelle in einer Datenbank zugeordnet sind und zur automatischen Ausführung einiger Aktionen verwendet werden, wenn a EINFÜGUNG, LÖSCHEN oder AKTUALISIEREN Das Ereignis wird auf dem Tisch durchgeführt. Ein Auslöser kann so eingestellt werden, dass eine Aktion entweder vor oder nach dem durchgeführt wird Fall es ist mit verbunden. In diesem Tutorial werden wir sehen, wie man einen Auslöser erstellt und verwaltet.

Eine Testdatenbank

Für dieses Tutorial erstellen wir eine Datenbank mit nur einer und sehr einfachen Tabelle mit einer Liste von Büchern und ihren jeweiligen Genres. Lassen Sie uns fortfahren:

Mariadb [(keine)]> Datenbank erstellen book_test; Mariadb [(keine)]> table book_test erstellen.Buch ( -> ID Smallint (1) Unsigniert nicht null auto_increment, -> nennen varchar (25) nicht null, -> genre varchar (25) nicht null, -> primärer Key (id)); 
Kopieren

Wir haben unsere triviale Tabelle erstellt, jetzt sollten wir sie mit einigen Büchern bevölkern. Hier sind einige meiner Favoriten:

Mariadb [(keine)]> verwenden book_test; Mariadb [book_test]> in book (name, genre) Werte einfügen -> ('1984', 'dystopian'), -> ('Der Herr der Ringe', 'Fantasy'), -> ('Über die Genealogie von Moral "," Philosophie "); 
Kopieren

Das reicht für unser Beispiel. Hier ist die visuelle Darstellung unserer Tabelle:

+----+---------------------------+------------+ | id | Name | Genre | +----+---------------------------+------------+| 1 | 1984 | Dystopisch | | 2 | Der Herr der Ringe | Fantasie | | 3 | Über die Genealogie der Moral | Philosophie | +----+---------------------------+------------+ 
Kopieren

Nachdem wir unsere Testtabelle vorbereitet haben, können wir sehen, wie man a erstellt und verknüpft Abzug dazu.

Erstellen Sie einen Auslöser

Wie bereits erwähnt, können wir durch das Erstellen eines Auslösers unsere Datenbank automatisch eine bestimmte Aktion ausführen lassen, wann immer das angegebene Ereignis, das einer sein kann EINFÜGUNG, AKTUALISIEREN oder LÖSCHEN, wird auf dem Tisch durchgeführt. Nehmen wir zum Beispiel an, wir möchten aus irgendeinem seltsamen Grund nicht mehr als ein Philosophiebuch in unserer Sammlung zulassen, wie können wir diese Regel durchsetzen, wie wir diese Regel durchsetzen können? Während die Einschränkung auf einer höheren Ebene implementiert werden kann, können wir sie direkt in der Datenbank einstellen, indem wir einen Auslöser verwenden. Die Syntax zum Erstellen eines ist sehr einfach:

Erstellen Sie Trigger Trigger_Name # Zuweisen Sie dem Trigger vor | einen Namen zu Nach # setzen Sie, wenn der Auslöser ausgeführt werden sollte Insert | Löschen | Update # Setzen Sie die mit dem Auslöser auf Tabelle_Name # zugeordnete Anweisung Setzen 
Kopieren

Nach der obigen Syntax können wir unseren Auslöser erstellen:

Mariadb [book_test]> delimiter $ mariadb [book_test]> erstellen.Buch -> Für jede Zeile beginnt -> wenn neu.Genre = "Philosophie" und (Auswählen von Count (*) aus book_test.Buch wobei Genre = "Philosophie")> 0 dann -> Signal SQLState '45000' Set Message_text = 'Nur ein Philosophiebuch ist erlaubt!'; -> Ende if; -> Ende $ mariadb [book_test]> grafiter; 
Kopieren

Das erste, was wir in Zeile 1 getan haben, ist, die Datenbank zu unterweisen, die zu verwenden $ Charakter als Anweisung Grenzwerter anstelle des Standards ;. Dies liegt daran, dass der Semikolon -Trennzeichen innerhalb des Triggerkörpers verwendet wird.

Wir haben dann den Auslöser mit dem erstellt Trigger erstellen Erklärung in Zeile 2, gefolgt von der Name Wir wollen es zuweisen: "no_more_philosophy" in diesem Fall. Danach haben wir angegeben, dass der Auslöser ausgeführt werden sollte VOR Die EINFÜGUNG Stellungnahme. Sofort danach haben wir den Abzug mit der Tabelle "Buch" zugeordnet.

Der Körper des Abzugs beginnt mit FÜR JEDE REIHE In Zeile 3: Wir haben verwendet START Um den Beginn unserer zusammengesetzten Aussagen zu markieren, sollten diejenigen ausgeführt werden, die beim Aufrufen des Auslösers ausgeführt werden sollten, und wir markierten das Ende davon mit ENDE, Genau wie wir es mit anderen Verfahren tun.

Sobald der Trigger der Tabelle zugeordnet ist, wird sie vor der Ausführung jeder Zeileninsertion ausgeführt.

Wenn ein Auslöser durchgeführt wird, zwei Pseudorecords sind besiedelt: ALT Und NEU: Die ihnen zugewiesenen Werte variieren je nach Ereignisart. Für ein EINFÜGUNG Aussage, da die Zeile neu ist, die ALT PseudoreCord enthält während keine Werte NEU Enthält die Werte der neuen Zeile, die eingefügt werden sollten. Das Gegenteil wird für a passieren LÖSCHEN Aussage: Alt enthält die alten Werte, und neu ist leer. Endlich für AKTUALISIEREN Aussagen, beide werden besiedelt, da alt die alten Werte der Zeile enthalten, während neu die neuen enthalten werden.

Unser Abzug in Zeile 4 überprüft den Wert der Genre Spalte für die neue Zeile (identifiziert von NEU): Wenn es auf „Philosophie“ eingestellt ist, wird es nach Büchern mit dem Genre "Philosophie" abfragen und überprüfen, ob mindestens einer bereits vorhanden ist. Wenn es der Fall ist, wird eine Ausnahme mit der Nachricht eingerichtet, dass nur ein Philosophiebuch erlaubt ist!''.

Als letztes in Zeile 8 setzen wir den Trennzeichen zurück ;.

Unser Auslöser in Aktion

Lassen Sie uns unseren Auslöser in Aktion überprüfen: Wir werden versuchen, ein neues Buch mit dem Genre „Philosophie“ einzufügen und zu sehen, was passiert:

Mariadb [book_test]> in Buch (Name, Genre) Werte einfügen ('Republic', 'Philosophy'); Fehler 1644 (45000): Nur ein Philosophiebuch ist erlaubt! 
Kopieren

Wie Sie sehen können, hat der Auslöser funktioniert und der Server reagierte mit der Fehlermeldung, die wir festgelegt haben, als wir versuchten, unserer Sammlung ein weiteres Philosophiebuch hinzuzufügen.



Trigger verwalten

Um die Trigger in einer Datenbank zu überprüfen, müssen wir nur die Ausführung des Ausführens Show Trigger Befehl:

Mariadb [book_test]> show triggers \ g; ************************* 1. Reihe ****************************************************************************************.Genre = "Philosophie" und (Auswählen von Count (*) aus book_test.Buch wobei Genre = "Philosophie")> 0 dann Signal SQLState '45000' Set Message_text = 'Nur ein Philosophiebuch ist erlaubt!'; Ende wenn; END TIMING: Bevor erstellt: null 
Kopieren

Wenn Sie einen Auslöser fallen lassen, ist es genauso einfach: Wir müssen nur den Auslöser mit seinem Namen verweisen. Wenn wir beispielsweise den Auslöser „No_more_Philosophie“ entfernen möchten, sollten wir ausführen:

Mariadb [book_test]> Drop -Trigger no_more_philosophy;

Wenn wir wissen, dass die Datenbank für vorhandene Auslöser abfragen, erhalten wir einen leeren Satz:

Mariadb [book_test]> show triggers; Leeres Set (0.01 Sek.) 

Schlussfolgerungen

In diesem Tutorial haben wir gelernt, was ein Auslöser ist und mit der Syntax, mit der eins erstellt werden sollte. Wir haben auch eine triviale Tabelle erstellt und den Trigger damit zugeordnet, um zu sehen, wie sie verwendet werden kann, um eine bestimmte Regel zu gewährleisten. Schließlich haben wir gesehen, wie wir die vorhandenen Trigger in einer Datenbank überprüfen können und wie wir einen löschen können. Obwohl dies ausreichen sollte, um Ihnen den Einstieg zu erlangen.

Verwandte Linux -Tutorials:

  • Dinge zu installieren auf Ubuntu 20.04
  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Installieren Sie MySQL auf Ubuntu 20.04 LTS Linux
  • Mastering -Bash -Skriptschleifen beherrschen
  • So installieren Sie MySQL auf Almalinux
  • Ubuntu 20.04 WordPress mit Apache -Installation
  • OpenLiteSpeed ​​WordPress Installation
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Ampache Raspberry Pi Installation
  • Ubuntu 20.04: WordPress mit Nginx -Installation