Mit jQuery ist es möglich, eigene JavaScript-Events zu definieren und auszulösen (trigger). Alle Elemente, die an dieses Ereignis gebunden (bind) sind, werden dann benachrichtigt und können eine eigene Ereignisbehandlung vornehmen:
Eigene Events mit jQuery Bind und Trigger weiterlesen
Schlagwort: Trigger
MySQL Stored Procedure Beispiel
Wer sich mit dem SQL-Skript aus dem [post id=2634]MySQL Cursor Beispiel[/post] beschäftigt hat wird festgestellt haben, dass der dort definierte Trigger check_amount
nur funktioniert, wenn nicht mehr Produkte bestellt werden, als insgesamt überhaupt in allen Geschäften (engl. stores) verfügbar sind. Im Beispiel-Skript gibt es insgesamt 550 Fernseher:
1 2 3 4 | -- Insert some products INSERT INTO products(prod_id,name,store,stock) VALUES (NULL,'Fernseher','Berlin',250)$ INSERT INTO products(prod_id,name,store,stock) VALUES (NULL,'Fernseher','Potsdam',200)$ INSERT INTO products(prod_id,name,store,stock) VALUES (NULL,'Fernseher','Bremen',100)$ |
Wird nun die folgende Anfrage gestellt, dann werden mehr als 550 Fernseher bestellt und es kommt zu einem Trigger-Fehler:
1 | INSERT INTO orders(user_id,product,amount) VALUES (1,'Fernseher',1300)$ |
Um diesen Fehler zu beseitigen, habe ich den check_amount
-Trigger erweitert, so dass eine Stored Procedure namens availableQuantity
abgefragt wird, welche dann Auskunft darüber liefert, wie hoch die verfügbare Anzahl eines Produktes ist. Ist diese Anzahl kleiner als die bestellte Menge, dann wird die bestellte Menge einfach auf die maximal verfügbare Anzahl gesetzt.
MySQL Stored Procedure Beispiel weiterlesen
MySQL Trigger Beispiel
SQL-Trigger werden zur Überwachung von semantischen Integritätsbedingungen eingesetzt. Trigger bilden dabei eine einfache Form von ECA-Regeln. ECA steht für „Event, Control, Action“ und definiert in Zusammenhang mit Datenbanken eine Aktion, die nach der Kontrolle eines Ereignis ausgeführt werden soll.
Zur praktischen Veranschaulichung habe ich ein MySQL-Skript mit drei Tabellen und einem Trigger geschrieben. In der Tabelle „users“ können Benutzer mit einem Vor- und Nachnamen eingetragen werden. Der im Skript definierte Trigger führt nach dem Eintragen in die „users“-Tabelle einen Stringvergleich aus und schreibt alle Benutzer, deren Nachname nicht mit einem Buchstaben größer „N“ anfängt in die „users_a_m“-Tabelle. Alle Benutzer, deren Nachname mit einem „N“ oder größer beginnt, werden in die Tabelle „users_n_z“ kopiert.
Mein Beispiel demonstriert neben dem definierten After-Trigger auch noch eine Möglichkeit zur Datenbank-Skalierung. Man könnte nämlich die Tabellen „users_a_m“ und „users_n_z“ auf verschiedene Datenbank-Server auslagern und beim Lesen von Datensätzen die entsprechende Datenbank anfragen (je nachdem mit welchem Anfangsbuchstaben der Nachname des gesuchten Benutzers anfängt). Dies hätte den Vorteil, das die Datenbank-Anfragen verteilt werden und die Anfrage-Last nicht auf eine einzige Datenbank trifft.
MySQL Trigger Beispiel weiterlesen