Ein Trigger (Trigger) ist ein Objekt in der Datenbank, das eine Aktion ausführt, wenn in der Datenbank eine Operation oder ein Ereignis aufgetreten ist.
Beispiel: Wenn eine Eintrittskarte verkauft wird, wird ein verfügbarer Ort abgezinst.
Der generische Code lautet
CREATE TRIGGER Namensauslöser
{VOR | NACH}
// Wird vor oder nach dem Event ausgeführt
{INSERT | UPDATE | LÖSCHEN}
// durch den Trigger ausgelöste Aktion oder Ereignis
ON Tabellenname
// Name der Tabelle, die das Ereignis betroffen hat
FÜR JEDE REIHE
SQL-Satz, der ausgeführt wird
Wir haben das Beispiel des Ticketverkaufs für eine Veranstaltung oder ein Produkt auf Lager erstellt. Um dies zu testen, können Sie phpmyadminn oder eine beliebige Software verwenden, die gespeicherte Prozeduren und Trigger unterstützt.
Wir erstellen die Datenbank
CREATE DATABASE `sales`
Wir erstellen 2 Tabellen
Der Tisch zum Speichern der verkauften Tickets
CREATE TABLE `tickets` (
`id` int (10) NICHT NULL AUTO_INCREMENT,
`idevento` int (11) NICHT NULL,
`nroticket` int (11) NICHT NULL,
PRIMARY KEY (`id`)
) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 1;
Die Tabelle zum Speichern der Verfügbarkeit von Tickets für ein bestimmtes Ereignis
CREATE TABLE IF NOT EXISTS `stock` (
`idevento` int (10) NICHT NULL,
`stockactual` int (10) NICHT NULL
) ENGINE = MyISAM DEFAULT CHARSET = latin1;
CREATE TABLE `events` (
`idevento` int (10) NICHT NULL AUTO_INCREMENT,
`event` int (11) varchar (200),
`date` date NICHT NULL,
PRIMARY KEY (`idevento`)
) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 1;
Wir erstellen den Trigger als SQL-Abfrage, in diesem Fall verwenden wir die kostenlose Software HEIDISQL, den Satz NEW.nombre_column
a gibt an, welches Feld der Trigger-Operation in diesem Fall für die Ausführung verwendet werden soll idevento, wenn mehr vorhanden sind, verwende ich sie immer mit NEW davor.
CREATE TRIGGER `update_stock` NACH INSERT ON` tickets`
FÜR JEDEN
REIHE
UPDATE stock SET stockactual = stockactual -1 WHERE idevento = NEW.idevento
: Wir führen die SQL-Anweisung aus und stellen fest, dass der Trigger tatsächlich erstellt wurde :
Als Beispiel fügen wir in die Bestandsliste 500 Tickets ein, die für ein Ereignis verfügbar sind. Hier gibt es keine Antwort vom Auslöser, da wir ihn so erstellen, dass er ausgeführt wird, wenn eine Einfügung in die Kartentabelle erfolgt.
INSERT IN `sales`.`stock` (` idevento`, `stockactual`) VALUES (‘1’, ‘500’);
Lassen Sie uns nun die Magie der Auslöser ausprobieren
Angenommen, wir verkaufen Ticket Nummer 100 für Event 1 und fügen den Verkauf in die Datenbank Tickets ein
INSERT INTO tickets (idevento, nroticket) VALUES (‘1’, ‘100’);
Beobachten Sie, was in der Bestandsliste passiert ist, und wir werden sehen, dass in der Bestandsliste für dieses Ereignis jetzt 499 Tickets verfügbar sind, da das Einfügen in die Bestandsliste ausgelöst wurde und ich tigger updates_stock ausgeführt habe .
Die Verwendung dieser Methodik ermöglicht dem Benutzer und dem Programmierer eine transparente Ausführung, da bekannt ist, dass eine Aktion ausgeführt wird, wenn eine andere Aktion sie auslöst, und Routineaufgaben wie die Aktualisierung eines Bestands bei Verkäufen vermieden werden. Stellen Sie sich dies vor, wenn der Verkauf ein Markt mit Tausenden ist Produkt sehen wir, wie wir mit ein paar Zeilen Code ein großes Problem lösen.
Ein anderes Beispiel könnte sein, ein Produkt aus dem Lager zu entfernen und den Bestand zu entfernen
CREATE TRIGGER `Low_products` NACH DELETE ON` products`
FÜR JEDEN
AB Lager LÖSCHEN WO idproduct = NEW.idproduct
REIHE
Die Möglichkeiten sind endlos und Sie können tief in komplexere Situationen vordringen. Trigger oder Trigger sind eine großartige Ergänzung zu gespeicherten Prozeduren