Разширено Mysql - програмиране на тригери

Съдържание
Разширено Mysql - програмиране на тригери
Тригери е обект в базата данни, който изпълнява действие, когато в базата данни е настъпила операция или събитие.
Пример, когато се продава входен билет, ние отстъпваме наличното място.
Общият код е
СЪЗДАЙТЕ TRIGGER име на задействане
{ПРЕДИ | DESPUES DE}
// Ще бъде изпълнено преди или след събитието
{ИНСЕРТ | АКТУАЛИЗИРАНЕ | ИЗТРИЙ}
// действие или събитие, което задейства задействането
ON име на таблица
// име на таблицата, която е повлияла на събитието
ЗА ВСЕКИ РЕД
sql изявление за изпълнение
Ние създаваме пример за продажба на билети за събитие или продукт на склад. За да проверите това, можете да използвате phpmyadminn или друг софтуер, който поддържа съхранени процедури и тригери.
Ние създаваме базата данни
СЪЗДАВАНЕ НА БАЗА ДАННИ `продажби`
Създаваме 2 таблици
Масата за съхранение на продадените билети
CREATE TABLE `билети` (
`id` int (10) NOT NULL AUTO_INCREMENT,
`idevent` int (11) NOT NULL,
`nroticket` int (11) NOT NULL,
ОСНОВЕН КЛЮЧ (`id`)
) ДВИГАТЕЛ = КАРТЕТА ПО УМОЛЧЕНИЕ НА MyISAM = latin1 AUTO_INCREMENT = 1;
Таблицата за съхраняване на наличността на билети за определено събитие
СЪЗДАЙТЕ ТАБЛИЦА, АКО НЕ СЪЩЕСТВА `запас` (
`idevent` int (10) NOT NULL,
`stockactual` int (10) NOT NULL
) ДВИГАТЕЛ = КАРТЕТА ПО УМОЛЧЕНИЕ НА MyISAM = latin1;
CREATE TABLE `събития` (
`idevent` int (10) NOT NULL AUTO_INCREMENT,
`event` int (11) varchar (200),
дата „дата“ НЕ Е НУЛ,
ОСНОВЕН КЛЮЧ (`idevent`)
) ДВИГАТЕЛ = КАРТЕТА ПО УМОЛЧЕНИЕ НА MyISAM = latin1 AUTO_INCREMENT = 1;
Създаваме тригера като sql заявка, в този случай използваме безплатния софтуер HEIDISQL, НОВОТО изявление.column_name
a показва кое поле от операцията за задействане ще използваме при изпълнението в този случай на събитие, ако има повече, винаги ги използвам с NEW отпред,
СЪЗДАЙТЕ TRIGGER `update_stock` СЛЕД ИНСЕРТИРАНЕ НА` билети`
ЗА ВСЕКИ
ROW
АКТУАЛИЗИРАНЕ НА КОМПЛЕКТА на запасите stockactual = stockactual -1 WHERE idevent = NEW.idevent

Изпълняваме SQL израза и виждаме, че тригерът наистина е създаден:

Като пример вмъкваме в масата 500 налични билета за събитие, тук няма да има отговор от тригера, тъй като ние го създаваме, за да бъде изпълнен, ако се получи вмъкване в билетите за маса.
ИНСЕРТИРАЙТЕ в „sales“ „stock“ („Eventide“, „current stock`) СТОЙНОСТИ („ 1 “,„ 500 “);

Сега нека опитаме магията на тригерите
Да предположим, че продаваме билет номер 100 за събитие 1 и вмъкваме продажбата в базата данни с билети
INSERT INTO билети (idevent, nroticket) VALUES ('1', '100');
Нека да наблюдаваме какво се е случило в таблицата със запасите и ще видим, че запасите за това събитие вече разполагат с 499 налични билета, тъй като вмъкването в таблицата билет Стрелям и тичам тигъра update_stock.
Използването на тази методология позволява прозрачност на изпълнението както на потребителя, така и на програмиста, като се знае, че дадено действие ще бъде изпълнено, ако друг го задейства и по този начин се избягват рутинни задачи като актуализиране на склад в случай на продажби, представете си това, ако продажбата е пазар с хиляди продукти, виждаме как с няколко реда код решаваме голям проблем.
Друг пример може да бъде премахване на продукт от склада и премахване на наличностите
CREATE TRIGGER `Lower_products` AFTER DELETE ON` products`
ЗА ВСЕКИ

ИЗТРИВАЙТЕ ОТ СЛАГА КЪДЕ productid = NEW.productid
ROW
Възможностите са безкрайни и можете да навлезете дълбоко в по -сложни ситуации, тригерите са чудесно допълнение към съхранените процедуриХареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка
wave wave wave wave wave