Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Korzystanie z wyzwalaczy MySQL

W tym artykule opisano, jak tworzyć i używać wyzwalaczy MySQL na koncie A2 Hosting. Wyzwalacze to predefiniowane reguły powiązane z tabelą. Mogą być wywoływane („wyzwalane”) przed lub po wstawieniu, zaktualizowaniu lub usunięciu danych z powiązanej tabeli.

Wyzwalaczy można używać w wielu różnych scenariuszach. Na przykład możesz użyć wyzwalacza, aby automatycznie zmienić niektóre wartości po zaktualizowaniu wiersza. Możesz też określić zestaw działań do wykonania po usunięciu wiersza. Możliwości są prawie nieograniczone.

Tworzenie i używanie wyzwalaczy

Możesz tworzyć i używać wyzwalaczy na dowolnym serwerze A2 Hosting, który używa MySQL.

Konfigurowanie testowej bazy danych

Aby zademonstrować podstawowy przykład działania wyzwalacza, zacznijmy od utworzenia bazy danych do celów testowych. W poniższej instrukcji SQL zastąp nazwa użytkownika z nazwą użytkownika konta:

CREATE DATABASE username_test;
Możesz uruchomić poprzednie polecenie SQL (i następujące polecenia SQL) z wiersza poleceń za pomocą narzędzia MySQL lub w przeglądarce internetowej za pomocą phpMyAdmin.

Jeśli używasz phpMyAdmin, kliknij nazwę nazwa użytkownika _test, aby wybrać bazę danych. W przeciwnym razie, jeśli używasz programu wiersza poleceń mysql, wpisz następującą instrukcję SQL:

USE username_test;

Następnie utwórz tabelę w nawie użytkownika _test baza danych o nazwie produkty . Aby to zrobić, uruchom następującą instrukcję SQL:

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));

Poniższa instrukcja SQL dodaje kilka przykładowych danych do produktów tabela:

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);

Teraz jesteśmy gotowi do stworzenia wyzwalacza dla naszego stołu!

Tworzenie wyzwalacza

Utwórzmy wyzwalacz o nazwie updateProductPrice . Ten konkretny wyzwalacz jest aktywowany za każdym razem, gdy produkty tabela jest aktualizowana. Po wystąpieniu tego zdarzenia wyzwalacz sprawdza każdy wiersz, aby sprawdzić, czy koszt produktu (prod_cost ) wartość jest zmieniana. Jeśli tak, reguła automatycznie ustawia nową cenę produktu (prod_price ) do 1,40-krotności nowego kosztu przedmiotu (innymi słowy 40% narzutu).

Aby utworzyć ten wyzwalacz, uruchom następujące instrukcje MySQL:

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 ;
DELIMITER polecenie na początku tych instrukcji zapobiega zbyt szybkiemu przetwarzaniu definicji wyzwalacza przez MySQL. DELIMITER polecenie na końcu tych instrukcji przywraca normalne przetwarzanie.
Korzystanie ze spustu

AktualizacjaCenyProduktu wyzwalacz jest teraz gotowy do automatycznego wywołania za każdym razem, gdy wiersz w produktach tabela jest aktualizowana. Na przykład uruchom następującą instrukcję SQL, aby zmienić koszt podstawowego widżetu:

UPDATE products SET prod_cost = 7.00 WHERE prod_id = 1;

Po uruchomieniu tej instrukcji SQL wyzwalacz również zostaje aktywowany i automatycznie aktualizuje cenę podstawowego widżetu proporcjonalnie do nowego kosztu. Aby to sprawdzić, możesz uruchomić następującą instrukcję SQL:

SELECT * FROM products;

To stwierdzenie zwraca następujące wyniki:

+---------+--------------+-----------+------------+
| 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)

Jak widać, updateProductPrice wyzwalacz automatycznie zaktualizował cenę podstawowego widżetu (9,80) na podstawie nowego kosztu (7,00). Chociaż jest to prosty przykład tego, co może zrobić wyzwalacz, możesz użyć tych samych technik we własnych bazach danych — możliwości są prawie nieograniczone.

Więcej informacji

  • Aby uzyskać więcej informacji na temat wyzwalaczy MySQL, odwiedź http://dev.mysql.com/doc/refman/5.0/en/triggers.html.
  • Aby uzyskać więcej informacji na temat UTWÓRZ SPUST oświadczenie, odwiedź http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql Ograniczenie klucza obcego jest nieprawidłowo utworzone, błąd

  2. MySQL — spraw, aby istniejące pole było unikalne

  3. Usuń wiele wierszy, zaznaczając pola wyboru za pomocą PHP

  4. Błąd podczas konfigurowania Laravela na Mac php artisan migracji:brak takiego pliku lub katalogu

  5. Wstaw obiekty Blob w bazach danych MySql za pomocą php