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.