Тази статия описва как да създадете и използвате MySQL тригери във вашия A2 хостинг акаунт. Тригерите са предварително дефинирани правила, свързани с таблица. Те могат да бъдат извикани („задействани“) преди или след SQL израз, който вмъква, актуализира или изтрива данни от свързаната таблица.
Можете да използвате тригери в широк спектър от сценарии. Например, можете да използвате тригер за автоматично промяна на определени стойности, когато ред се актуализира. Или можете да посочите набор от действия, които да предприемете всеки път, когато даден ред се изтрие. Възможностите са почти безкрайни.
Създаване и използване на тригери
Можете да създавате и използвате тригери на всеки A2 хостинг сървър, който използва MySQL.
Настройване на тестова база данни
За да демонстрираме основен пример за задействане в действие, нека започнем със създаване на база данни за целите на тестването. В следния SQL израз заменете потребителско име с потребителското име на вашия акаунт:
СЪЗДАВАНЕ НА БАЗА ДАННИ потребителско име _тест;Можете да изпълните предишната SQL команда (и следващите SQL команди) от командния ред с помощта на инструмента MySQL или във вашия уеб браузър с помощта на phpMyAdmin.
Ако използвате phpMyAdmin, щракнете върху името потребителско име _test, за да изберете базата данни. В противен случай, ако използвате програмата от командния ред mysql, въведете следния SQL израз:
ИЗПОЛЗВАЙТЕ потребителско име _тест;
След това създайте таблица в потребителското име _теста база данни с име продукти . За да направите това, изпълнете следния SQL оператор:
CREATE TABLE продукти (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)Следният SQL израз добавя някои примерни данни към продуктите таблица:
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);ВЪВЕТЕ В продукти (prod_name, prod_cost, prod_price)>Сега сме готови да създадем тригер за нашата маса!
Създаване на тригера
Нека създадем тригер с име updateProductPrice . Този конкретен тригер се активира всеки път, когато продуктите таблицата се актуализира. Когато настъпи това събитие, тригерът проверява всеки ред, за да види дали цената на продукта (prod_cost ) стойността се променя. Ако е така, тогава тригерът автоматично задава новата цена на артикула (prod_price ) до 1,40 пъти новата цена на артикула (с други думи, надценка от 40%).
За да създадете този тригер, изпълнете следните MySQL оператори:
DELIMITER $$CREATE TRIGGER `updateProductPrice`ПРЕДИ АКТУАЛИЗИРАНЕ НА `products`ЗА ВСЕКИ РЕДЗАЧИТАНЕ АКО NEW.prod_cost <> OLD.prod_cost СЛЕД ЗАДАДЕТЕ NEW.prod_price =NEW.prod_cost * 1,40; END IF;END$$DELIMITER;DELIMITER командата в началото на тези изрази не позволява на MySQL да обработва дефиницията на тригера твърде скоро. DELIMITER командата в края на тези изрази връща обработката към нормалното.Използване на спусъка
updateProductPrice тригерът вече е готов за автоматично извикване, когато има ред в продуктите таблицата се актуализира. Например, изпълнете следния SQL оператор, за да промените цената на основната джаджа:
АКТУАЛИЗИРАНЕ на продукти ЗАДАДЕТЕ prod_cost =7,00 КЪДЕ prod_id =1;Когато изпълните този SQL оператор, тригерът също се активира и автоматично актуализира цената на основната джаджа пропорционално на новата цена. За да потвърдите това, можете да изпълните следния SQL израз:
ИЗБЕРЕТЕ * ОТ продукти;Това изявление връща следните резултати:
+--------+--------------+-----------+--------- ---+| prod_id | prod_name | prod_cost | прод_цена |+--------+--------------+-----------+---------- --+| 1 | Основна джаджа | 7 | 9.8 || 2 | Micro Widget | 0,95 | 1,35 || 3 | Мега джаджа | 99,95 | 140 |+--------+--------------+----------+---------- --+3 реда в комплект (0,00 сек)Както можете да видите, updateProductPrice тригерът автоматично актуализира цената на основната джаджа (9,80) въз основа на новата цена (7,00). Въпреки че това е прост пример за това какво може да направи тригерът, можете да използвате същите техники в собствените си бази данни – възможностите са почти безкрайни.
Повече информация
- За повече информация относно задействанията на MySQL, моля, посетете http://dev.mysql.com/doc/refman/5.0/en/triggers.html.
- За повече информация относно СЪЗДАВАНЕ НА ЗАПУСКВАНЕ изявление, моля, посетете http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html.