sql >> Databáze >  >> RDS >> Mysql

Použití spouštěčů MySQL

Tento článek popisuje, jak vytvořit a používat spouštěče MySQL na vašem účtu A2 Hosting. Spouštěče jsou předdefinovaná pravidla spojená s tabulkou. Mohou být volány („spouštěny“) před nebo poté, co příkaz SQL vloží, aktualizuje nebo odstraní data z přidružené tabulky.

Spouštěče můžete použít v široké škále scénářů. Můžete například použít spouštěč k automatické změně určitých hodnot při aktualizaci řádku. Nebo můžete zadat sadu akcí, které se mají provést při každém odstranění řádku. Možnosti jsou téměř nekonečné.

Vytváření a používání spouštěčů

Spouštěče můžete vytvářet a používat na jakémkoli hostitelském serveru A2, který používá MySQL.

Nastavení testovací databáze

Abychom demonstrovali základní příklad spouštěče v akci, začněme vytvořením databáze pro testovací účely. V následujícím příkazu SQL nahraďte uživatelské jméno s uživatelským jménem vašeho účtu:

CREATE DATABASE username_test;
Předchozí příkaz SQL (a následující příkazy SQL) můžete spustit z příkazového řádku pomocí nástroje MySQL nebo ve webovém prohlížeči pomocí phpMyAdmin.

Pokud používáte phpMyAdmin, klikněte na jméno uživatelské jméno _test pro výběr databáze. V opačném případě, pokud používáte program příkazového řádku mysql, zadejte následující příkaz SQL:

USE username_test;

Dále vytvořte tabulku v uživatelském jméně _test databáze s názvem produkty . Chcete-li to provést, spusťte následující příkaz 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));
id));

Následující příkaz SQL přidává některá ukázková data do produktů tabulka:

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

Nyní jsme připraveni vytvořit spouštěč pro náš stůl!

Vytvoření spouštěče

Vytvořme spouštěč s názvem updateProductPrice . Tento konkrétní spouštěč se aktivuje vždy, když produkty tabulka je aktualizována. Když k této události dojde, spouštěč zkontroluje každý řádek, aby zjistil, zda cena produktu (prod_cost ) hodnota se mění. Pokud ano, spouštěč automaticky nastaví novou cenu položky (prod_price ) na 1,40násobek nové ceny položky (jinými slovy 40% marže).

Chcete-li vytvořit tento spouštěč, spusťte následující příkazy 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 příkaz na začátku těchto příkazů zabraňuje MySQL zpracovat definici spouštěče příliš brzy. DELIMITER příkaz na konci těchto příkazů vrátí zpracování do normálu.
Použití spouštěče

updateProductPrice trigger je nyní připraven k automatickému vyvolání při každém řádku v produktech tabulka je aktualizována. Například spuštěním následujícího příkazu SQL změňte cenu základního widgetu:

UPDATE products SET prod_cost = 7.00 WHERE prod_id = 1;

Když spustíte tento příkaz SQL, aktivuje se také spouštěč a automaticky aktualizuje cenu základního widgetu v poměru k nové ceně. Chcete-li to ověřit, můžete spustit následující příkaz SQL:

SELECT * FROM products;

Tento příkaz vrátí následující výsledky:

+---------+--------------+-----------+------------+
| 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 můžete vidět, updateProductPrice trigger automaticky aktualizoval cenu základního widgetu (9,80) na základě nové ceny (7,00). Ačkoli se jedná o jednoduchý příklad toho, co spouštěč dokáže, můžete stejné techniky použít ve svých vlastních databázích – možnosti jsou téměř nekonečné.

Další informace

  • Další informace o spouštěčích MySQL naleznete na adrese http://dev.mysql.com/doc/refman/5.0/en/triggers.html.
  • Další informace o CREATE TRIGGER prohlášení, navštivte prosím http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html.

  1. Oříznutí času od data a času – pokračování

  2. Řaďte ​​podle COUNT za hodnotu

  3. Jak hromadně aktualizovat sekvenční ID postgreSQL pro všechny tabulky

  4. SQL, jak zřetězit výsledky?