Advanced Mysql - Trigger-Programmierung

Inhaltsverzeichnis
Advanced Mysql - Trigger-Programmierung
Ein Trigger ist ein Objekt innerhalb der Datenbank, das eine Aktion ausführt, wenn eine Operation oder ein Ereignis in der Datenbank aufgetreten ist.
Wenn beispielsweise eine Eintrittskarte verkauft wird, gewähren wir einen Rabatt auf einen verfügbaren Sitzplatz.
Der generische Code ist
AUSLÖSER ERSTELLEN Auslösername
{VOR | DESPUES DE }
// Es wird vor oder nach dem Ereignis ausgeführt
{EINFÜGEN | AKTUALISIEREN | LÖSCHEN}
// Aktion oder Ereignis, das den Trigger auslöst
ON Tabellenname
// Name der Tabelle, die das Ereignis beeinflusst hat
FÜR JEDE REIHE
SQL-Anweisung ausgeführt werden
Wir erstellen das Beispiel Ticketverkauf für eine Veranstaltung oder ein Produkt auf Lager. Um dies zu testen, können Sie phpmyadminn oder eine beliebige Software verwenden, die gespeicherte Prozeduren und Trigger unterstützt.
Wir erstellen die Datenbank
DATENBANK `Vertrieb` ERSTELLEN
Wir erstellen 2 Tabellen
Der Tisch zum Speichern der verkauften Tickets
TABELLEN 'Tickets' ERSTELLEN (
`id` int (10) NOT NULL AUTO_INCREMENT,
`idevent` int (11) NICHT NULL,
`nroticket` int (11) NICHT NULL,
PRIMÄRSCHLÜSSEL (`id`)
) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 1;
Die Tabelle zum Speichern der Verfügbarkeit von Tickets für eine bestimmte Veranstaltung
TABELLE ERSTELLEN, WENN `stock` (
`idevent` int (10) NICHT NULL,
`stockactual` int (10) NICHT NULL
) ENGINE = MyISAM DEFAULT CHARSET = latin1;
CREATE TABLE `Ereignisse` (
`idevent` int (10) NOT NULL AUTO_INCREMENT,
`Ereignis` int (11) varchar (200),
`date` Datum NICHT NULL,
PRIMÄRSCHLÜSSEL (`idevent`)
) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 1;
Wir erstellen den Trigger als SQL-Abfrage, in diesem Fall verwenden wir die kostenlose HEIDISQL-Software, die NEW-Anweisung.column_name
a gibt an, welches Feld der Trigger-Operation wir in diesem Fall bei der Ausführung verwenden werden, wenn es mehr gibt, verwende ich sie immer mit NEW davor,
ERSTELLE AUSLÖSER `update_stock` NACH EINFÜGEN AUF` Tickets`
FÜR JEDES
DIE ZEILE
UPDATE Lagerbestand SET Lagerbestand = Lagerbestand -1 WO idevent = NEU.idevent

Wir führen die SQL-Anweisung aus und sehen, dass der Trigger tatsächlich erstellt wurde:

Als Beispiel fügen wir in den Tischbestand von 500 verfügbaren Tickets für eine Veranstaltung ein, hier erfolgt keine Reaktion des Triggers, da wir ihn so erstellen, dass er ausgeführt wird, wenn eine Einfügung in die Tischtickets erfolgt.
INSERT INTO `Sales``Stock` (` eventide`, `current stock`) VALUES ('1', '500');

Jetzt probieren wir die Magie der Trigger aus
Angenommen, wir verkaufen die Ticketnummer 100 für Event 1 und fügen den Verkauf in die Ticketdatenbank ein
INSERT INTO tickets (idevent, nroticket) WERTE ('1', '100');
Schauen wir uns an, was in der Bestandstabelle passiert ist und wir werden sehen, dass der Bestand für diese Veranstaltung jetzt 499 Tickets verfügbar hat, weil die Einfügung in die Tabelle Fahrkarte Ich schieße und renne den Tiger update_stock.
Die Verwendung dieser Methodik ermöglicht sowohl dem Benutzer als auch dem Programmierer die Transparenz der Ausführung, da er weiß, dass eine Aktion ausgeführt wird, wenn eine andere sie auslöst, und somit Routineaufgaben wie die Aktualisierung eines Lagerbestands im Falle eines Verkaufs vermieden werden. Stellen Sie sich dies vor, wenn der Verkauf a Markt mit Tausenden von Produkten, sehen wir, wie wir mit wenigen Codezeilen 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 `Lower_products` NACH DELETE ON` products`
FÜR JEDES

AUS DEM Lager LÖSCHEN WO productid = NEW.productid
DIE ZEILE
Die Möglichkeiten sind endlos und Sie können tief in komplexere Situationen eintauchen, Trigger sind eine großartige Ergänzung zu gespeicherten ProzedurenHat dir dieses Tutorial gefallen und geholfen?Sie können den Autor belohnen, indem Sie diesen Knopf drücken, um ihm einen positiven Punkt zu geben
wave wave wave wave wave