Lernen von Mariadb -Triggern

Lernen von Mariadb -Triggern

Wie man Auslöser in Mariadb verwendet

Ein Auslöser ist eine Prozedur, die automatisch abgefeuert wird, wenn eine Änderung an einer Datenbanktabelle vorgenommen wird. Es gibt keine Möglichkeit, einen Auslöser manuell anzurufen oder auszuführen. Der Hauptzweck bei der Verwendung von Triggern besteht darin, die Datenbankintegrität aufrechtzuerhalten und mit den Referenzintegritätsbeschränkungen verwendet werden kann, die Integritätsregeln erzwingen. In einem DBMS wird ein Einfügen, Aktualisieren und Löschen von Ereignissen auftritt, und dann wird die mit der betriebene Tabelle automatisch ausgeführt und die erforderlichen Aktionen durchgeführt. Verschiedene Arten von Triggern werden von der Datenbank unterstützt. Auslöser werden hauptsächlich auf zwei Arten kategorisiert. Einer ist vor Trigger und ein anderer ist nach Abzug. Bevor Trigger aufgerufen werden, bevor ein Ereignis in der Tabelle ausgeführt wird und nach Auslöser nach Ausführung eines Ereignisses in der Tabelle aufgerufen wird. Wie Sie MariADB installieren und verschiedene Arten von Triggern auf dem MariADB -Datenbankserver auf Ubuntu anwenden, wird in diesem Tutorial angezeigt.

Mariadb -Installation:

Führen Sie den folgenden Befehl aus, um das System zu aktualisieren, und installieren Sie MariADB Server und Client.

# sudo APT-Get Update && sudo apt-Get Installieren Sie Mariadb-Server Mariadb-Client

Typ 'y ' und drücken Sie die Eingabetaste, um den Installationsprozess abzuschließen.

Führen Sie den folgenden Befehl aus, um den Mariadb -Server zu starten.

# sudo systemctl starten mariadb

Überprüfen Sie, ob der Server ordnungsgemäß funktioniert oder nicht. Die Ausgabe des folgenden Befehls zeigt den Detailstatus des Servers an. Der Ausgang zeigt das an Mariadb 10.1.30 Verion läuft.

# sudo systemctl status mariadb

Führen Sie den folgenden Befehl aus, wenn Sie den Server stoppen möchten. Führen Sie diesen Befehl jetzt nicht aus.

# sudo systemctl stoppen mariadb

Richten Sie die Datenbank und Tabellen ein

Sie müssen eine Datenbank und zwei oder mehr Tabellen erstellen, um zu überprüfen, wie Auslöser funktionieren. Führen Sie zunächst den MySQL -Client aus, um die Datenbank einzurichten. Es wird um Root -Passwort aufgefordert, auf den Datenbankserver zuzugreifen.

# sudo mysql -u root

Erstellen Sie eine Datenbank mit dem Namen speichern.

> Datenbankspeicher erstellen;

Wählen Sie diese neue Datenbank aus:

> Store verwenden;

Erstellen Sie drei Tabellen in speichern Datenbank, um Triggeraktionen auf diese anzuwenden. Hier, Produkte, Stock und Stock_ADD Tabellen werden erstellt.

Tischprodukte erstellen
(Id int (11),
Nennen Sie Varchar (30) nicht null,
Preis int (11),
Primärschlüssel (ID)
);
Erstellen Sie Tabellenbestände
(product_id int (11),
Opening_stock int (11),
Current_Stock int (11),
Primärschlüssel (product_id)
);
TABLE stocks_add erstellen
(product_id int (11),
Eintragsdatum,
Menge int (11),
Primärschlüssel (product_id, Eintrag_date)
);

Fügen Sie nun einige Daten in diese drei Tabellen ein.

Produkte:

In Produkte einfügen ID = 101, Name = "Bag", Preis = 1000;
In Produkte einfügen ID = 102, Name = "Pen", Preis = 100;
In Produkte einfügen ID = 103, Name = "Bleistift", Preis = 50;

Aktien:

Einfügen in Aktien ein, setze product_id = 101, opening_stock = 200, current_stock = 100;
Einfügen in die Aktien einstellen set protrot_id = 102, opening_stock = 230, current_stock = 150;
Einfügen in die Aktien einstellen set protrot_id = 103, opening_stock = 220, Current_Stock = 300;

stocks_add:

Einfügen in stocks_add set product_id = 103, Eintrag_date = "2018-01-01", Quantity = 30;
Einfügen in stocks_add set protrot_id = 103, Eintrag_date = "2018-01-02", Quantity = 50;
Einfügen in stocks_add set protrot_id = 103, Eintrag_date = "2018-01-03", Quantity = 45;

Nach Trigger erstellen

Sie können nach dem Auslöser erstellen, um eine Aktion automatisch auszuführen, nachdem Sie Datensätze einer bestimmten Tabelle eingefügt oder aktualisiert oder gelöscht haben. Hier, Produkte Und Aktien Tabellen werden ausgewählt, um nach dem Löschen von Trigger zu erstellen. Die Daten der Bestandtabelle hängen von den Daten der Produkttabelle ab. Wenn also eine Aufzeichnung aus der Produkttabelle entfernt wird, müssen die zugehörigen Aufzeichnungen der Bestandtabelle entfernt werden. Erstellen Sie die folgende Auslöser -Prozedur zum Löschen einer zugehörigen Datensatzdatensatz aus der Bestandtabelle, wenn ein Datensatz aus der Produkttabelle entfernt wird. In diesem Auslöser wird die gelöschte ID von erkannt alt.Ausweis.

Abgrenzer //
Erstellen Sie Trigger products_after_delete
Nach dem Löschen
Auf Produkten für jede Reihe
START
Löschen Sie aus Aktien, bei denen product_id = alt ist.Ausweis;
ENDE;
//


Nach dem Auslöser wurde für die Produkttabelle erstellt. Jetzt müssen Sie testen, dass der Trigger ordnungsgemäß funktioniert oder nicht. Führen Sie die folgende Anfrage aus, um einen Datensatz aus Produkten zu entfernen, wo Ausweis Ist 101 und überprüfen Sie die Daten von Produkten und Aktientabellen. Nach der Ausführung der Abfrage finden Sie, dass der damit verbundene Datensatz der Bestandtabelle nach dem Auslöser entfernt wird. In beiden Tabellen findet sich kein Datensatz für den ID -Wert, 101, in beiden Tabellen.

> aus Produkten löschen, wobei ID = 101;
> aus Produkten auswählen;
> Auswahl * aus Aktien;

Erstellen Sie vor Triggern

Vor dem Auslöser wird vor dem Einfügen oder Aktualisieren oder Löschen von Datensätzen aus einer bestimmten Tabelle Maßnahmen ergriffen. Hier, Aktien Und stocks_add Die Tabelle wird verwendet, um vor dem Trigger zu erstellen. Der Wert von Current_Stock of Stocks -Tabelle hängt vom Mengenwert der Tabelle stocks_add ab. Wenn Sie einen Mengenwert der Tabelle stocks_add aktualisieren, muss aktuell die Tabelle der Aktien aktualisiert werden. Wenn also ein vorhandener Mengenwert der Tabelle stocks_add abnimmt. Erstellen Sie vor dem Update -Trigger für die Tabelle stocks_add. In diesem Auslöser wird der Wert der geänderten Menge berechnet, indem die alte Menge von der neuen Menge subtrahiert.

Abgrenzer //
Erstellen Sie Trigger stocks_before_update
Vor dem Update
Auf stocks_add für jede Zeile
START
Aktualisieren Aktien Setzen.Menge alt.Menge)
Wo product_id = alt.Produkt ID;
ENDE;
//

Überprüfen Sie vor der Aktualisierung die aktuellen Werte sowohl der Aktien- als auch der Stocks_add -Tabellen.

> Auswahl * aus Aktien;
> Wählen Sie * aus stocks_add;


Nehmen wir an, Sie müssen den Mengenwert der Tabelle stocks_add anwheren aktualisieren Produkt ID Ist 103 Und Beitrittsdatum Ist 2018-01-01 welches ist 30 Jetzt. Wenn Sie den Wert nach aktualisieren möchten 75 Führen Sie dann die folgende Update -Abfrage aus und überprüfen Sie beide Tabellen erneut. Die erhöhte Menge beträgt 75-30 = 45. Nach dem Update wird der Trigger abgefeuert und Current_Stock der Aktientabelle wird als 300+45 = 345 festgelegt.

Aktualisieren Sie stocks_add set quantity = 75 wobei protrot_id = 103 und Eintrag_date = "2018-01-01";
> Auswahl * aus Aktien;
> Wählen Sie * aus stocks_add;

Die Verwendung von zwei Arten von Triggern wird in diesem Tutorial angezeigt. In ähnlicher Weise können Sie andere Arten von vor und nach Trigger für Ihre Datenbanktabellen basierend auf Ihren Anforderungen erstellen.