Преглед садржаја
Адванцед Мискл - Триггер ПрограммингОкидачи су објекти у бази података који извршавају радњу када се у бази података догодила операција или догађај.
На пример, када се прода улазница, попустимо на слободно место.
Општи код је
ЦРЕАТЕ ТРИГГЕР име окидача
{ПРЕ | ДЕСПУЕС ДЕ}
// Извршиће се пре или после догађаја
{ИНСЕРТ | УПДАТЕ | ИЗБРИШИ}
// радња или догађај који покреће окидач
ОН име табле
// назив табеле која је утицала на догађај
ЗА СВАКИ РЕД
скл израз који треба извршити
Ми стварамо пример продаје карата за догађај или производ на лагеру. Да бисте ово тестирали, можете користити пхпмиадминн или било који софтвер који подржава ускладиштене процедуре и покретаче.
Ми стварамо базу података
ЦРЕАТЕ ДАТАБАСЕ `продаја`
Правимо 2 табеле
Сто за чување продатих карата
ЦРЕАТЕ ТАБЛЕ `карте` (
`ид` инт (10) НИЈЕ НУЛЛ АУТО_ИНЦРЕМЕНТ,
`идевент` инт (11) НИЈЕ НУЛЛ,
`нротицкет` инт (11) НИЈЕ НУЛЛ,
ПРИМАРНИ КЉУЧ (`ид`)
) МОТОР = ЗНАЧАЈНА КАРТА МИСИСАМ = латин1 АУТО_ИНЦРЕМЕНТ = 1;
Табела за складиштење доступности карата за одређени догађај
НАПРАВИ ТАБЕЛУ АКО НЕ ПОСТОЈИ `залиха` (
`идевент` инт (10) НИЈЕ НУЛЛ,
`стоцкацтуал` инт (10) НОТ НУЛЛ
) МОТОР = ЗНАЧАЈНА КАРТА МИСИСАМ = латин1;
ЦРЕАТЕ ТАБЛЕ `догађаји` (
`идевент` инт (10) НИЈЕ НУЛЛ АУТО_ИНЦРЕМЕНТ,
`евент` инт (11) варцхар (200),
датум „датум“ НИЈЕ НУЛЛ,
ПРИМАРНИ КЉУЧ (`идевент`)
) МОТОР = ЗНАЧАЈНА КАРТА МИСИСАМ = латин1 АУТО_ИНЦРЕМЕНТ = 1;
Креирамо окидач као скл упит, у овом случају користимо бесплатни софтвер ХЕИДИСКЛ, нову изјаву.цолумн_наме
а означава које поље операције окидача ћемо користити у извршавању у овом случају, ако их има више, увек их користим са НОВОМ испред,
ЦРЕАТЕ ТРИГГЕР `упдате_стоцк` НАКОН УЛАСКА ОН` тикета`
ЗА СВАКИ
РОВ
АЖУРИРАЈТЕ СЕТ СЕТ стоцкацтуал = стоцкацтуал -1 ВХЕРЕ идевент = НЕВ.идевент
Извршавамо СКЛ наредбу и видимо да је окидач заиста креиран:
Као пример убацујемо у табелу залиху од 500 улазница доступних за догађај, овде неће бити одговора од окидача јер га креирамо да би се извршио ако дође до уметања у стоне тикете.
ИНСЕРТ ИНТО `салес``стоцк` (` Евентиде`, `цуррент стоцк`) ВРЕДНОСТИ ('1', '500');
Хајде сада да испробамо магију окидача
Претпоставимо да продамо карту број 100 за догађај 1 и убацимо продају у базу улазница
ИНСЕРТ ИНТО улазнице (идевент, нротицкет) ВАЛУЕС ('1', '100');
Погледајмо шта се догодило у табели са залихама и видећемо да залихе за овај догађај сада имају на располагању 499 карата, јер уложак у табели Улазница Пуцам и трчим тигра упдате_стоцк.
Употреба ове методологије омогућава транспарентност извршења и кориснику и програмеру, знајући да ће се акција извршити ако је други покрене и тако избећи рутинске задатке, попут ажурирања залиха у случају продаје, замислите ово ако је продаја тржишту са хиљадама производа, видимо како са неколико редова кода решавамо велики проблем.
Други пример може бити уклањање производа из складишта и уклањање залиха
ЦРЕАТЕ ТРИГГЕР `Ловер_продуцтс` АФТЕР ДЕЛЕТЕ ОН` продуцтс`
ЗА СВАКИ
ИЗБРИШИ СА залиха ГДЕ продуцтид = НЕВ.продуцтид
РОВ
Могућности су бескрајне и можете заћи дубоко у сложеније ситуације, окидачи су одлична допуна сачуваним процедурамаДа ли вам се допао и помогао овај водич?Можете наградити аутора притиском на ово дугме да бисте му дали позитиван поен