Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verwenden von MySQL-Triggern

Dieser Artikel beschreibt, wie Sie MySQL-Trigger in Ihrem A2-Hosting-Konto erstellen und verwenden. Auslöser sind vordefinierte Regeln, die einer Tabelle zugeordnet sind. Sie können aufgerufen ("ausgelöst") werden, bevor oder nachdem eine SQL-Anweisung Daten aus der zugehörigen Tabelle einfügt, aktualisiert oder löscht.

Sie können Trigger in einer Vielzahl von Szenarien verwenden. Beispielsweise könnten Sie einen Trigger verwenden, um bestimmte Werte automatisch zu ändern, wenn eine Zeile aktualisiert wird. Oder Sie können eine Reihe von Aktionen angeben, die ausgeführt werden sollen, wenn eine Zeile gelöscht wird. Die Möglichkeiten sind nahezu unbegrenzt.

Trigger erstellen und verwenden

Sie können Trigger auf jedem A2 Hosting-Server erstellen und verwenden, der MySQL verwendet.

Einrichten einer Testdatenbank

Um ein einfaches Beispiel eines Triggers in Aktion zu demonstrieren, beginnen wir mit dem Erstellen einer Datenbank zu Testzwecken. Ersetzen Sie in der folgenden SQL-Anweisung Benutzername mit Ihrem Konto-Benutzernamen:

CREATE DATABASE username_test;
Sie können den vorherigen SQL-Befehl (und die folgenden SQL-Befehle) über die Befehlszeile mit dem MySQL-Tool oder in Ihrem Webbrowser mit phpMyAdmin ausführen.

Wenn Sie phpMyAdmin verwenden, klicken Sie auf den Namen Benutzername _test, um die Datenbank auszuwählen. Andernfalls, wenn Sie das mysql-Befehlszeilenprogramm verwenden, geben Sie die folgende SQL-Anweisung ein:

USE username_test;

Erstellen Sie als Nächstes eine Tabelle im Benutzernamen _test Datenbank mit dem Namen products . Führen Sie dazu die folgende SQL-Anweisung aus:

CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));

Die folgende SQL-Anweisung fügt einige Beispieldaten zu den Produkten hinzu Tabelle:

INSERT INTO products (prod_name, prod_cost, prod_price) VALUES ('Basic Widget',5.95,8.35),('Micro Widget',0.95,1.35),('Mega Widget',99.95,140.00);

Jetzt können wir einen Trigger für unsere Tabelle erstellen!

Trigger erstellen

Lassen Sie uns einen Trigger namens updateProductPrice erstellen . Dieser spezielle Auslöser wird immer dann aktiviert, wenn die Produkte Tabelle wird aktualisiert. Wenn dieses Ereignis eintritt, überprüft der Trigger jede Zeile, um festzustellen, ob die Produktkosten (prod_cost ) Wert wird geändert. Wenn dies der Fall ist, legt der Trigger automatisch den neuen Preis des Artikels fest (prod_price ) auf das 1,40-fache des Neupreises des Artikels (d. h. einen Aufschlag von 40 %).

Um diesen Trigger zu erstellen, führen Sie die folgenden MySQL-Anweisungen aus:

DELIMITER $$
CREATE TRIGGER `updateProductPrice`
BEFORE UPDATE ON `products`
FOR EACH ROW
BEGIN
  IF NEW.prod_cost <> OLD.prod_cost
    THEN
      SET NEW.prod_price = NEW.prod_cost * 1.40;
  END IF ;
END$$
DELIMITER ;
Das TRENNZEICHEN Der Befehl am Anfang dieser Anweisungen verhindert, dass MySQL die Triggerdefinition zu früh verarbeitet. Das TRENNZEICHEN Der Befehl am Ende dieser Anweisungen kehrt zur normalen Verarbeitung zurück.
Den Auslöser verwenden

Der updateProductPrice Trigger ist jetzt bereit, automatisch aufgerufen zu werden, wenn eine Zeile in den Produkten erscheint Tabelle wird aktualisiert. Führen Sie beispielsweise die folgende SQL-Anweisung aus, um die Kosten des Basis-Widgets zu ändern:

UPDATE products SET prod_cost = 7.00 WHERE prod_id = 1;

Wenn Sie diese SQL-Anweisung ausführen, wird der Trigger ebenfalls aktiviert und aktualisiert automatisch den Preis des Basis-Widgets im Verhältnis zu den neuen Kosten. Um dies zu überprüfen, können Sie die folgende SQL-Anweisung ausführen:

SELECT * FROM products;

Diese Anweisung gibt die folgenden Ergebnisse zurück:

+---------+--------------+-----------+------------+
| prod_id | prod_name    | prod_cost | prod_price |
+---------+--------------+-----------+------------+
|       1 | Basic Widget |         7 |        9.8 |
|       2 | Micro Widget |      0.95 |       1.35 |
|       3 | Mega Widget  |     99.95 |        140 |
+---------+--------------+-----------+------------+
3 rows in set (0.00 sec)

Wie Sie sehen können, ist der updateProductPrice Trigger hat den Preis des Basis-Widgets (9,80) basierend auf den neuen Kosten (7,00) automatisch aktualisiert. Obwohl dies nur ein einfaches Beispiel dafür ist, was ein Trigger bewirken kann, können Sie die gleichen Techniken in Ihren eigenen Datenbanken verwenden – die Möglichkeiten sind nahezu unbegrenzt.

Weitere Informationen

  • Weitere Informationen zu MySQL-Triggern finden Sie unter http://dev.mysql.com/doc/refman/5.0/en/triggers.html.
  • Weitere Informationen zum CREATE TRIGGER -Anweisung finden Sie unter http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html.