Преглед садржаја
Изјава која ствара окидач јеЦРЕАТЕ ТРИГГЕР тиме_наме време догађаја на табели НА СВАКОМ РЕДУ
Тренутак
То може бити ПОСЛЕ или ПРЕ, то јест након или пре него што се догоди скл догађај, попут стварања записа, брисања, одабира, претраживања, измене итд.
Догађај
Било коју од скл операција називамо догађајем, може бити ИНСЕРТ, УПДАТЕ или ДЕЛЕТЕ. Одабир се не може вршити из окидача (Одаберите * од …) ова операција се изводи из похрањених процедура, а не из окидача.
Опште изјаве и команде за управљање покретачима или окидачима
Ми стварамо окидач за ревизију продаје агенције за аутомобиле, сваки пут када оператер или продавац измени податке о клијенту, аутоматски ћемо у табели аудитс_цлиенте навести датум и време, ко је извршио промену и ко је клијент то је измењено
ЦРЕАТЕ ТРИГГЕР цлиент_аудит_триггер НАКОН АЖУРИРАЊА КЛИЈЕНТА ЗА СВАКИ РЕД УМЕТНИТЕ цлиент_аудит (цлиентид, модифиед_би, дате) ВРЕДНОСТИ (ОЛД.цлиентид, НЕВ.идоператор, НОВ ())Упитајте све покретаче који су доступни у бази података
Прикажи окидачеУ овом случају, она коју креирамо ревизију клијента и видимо њену функционалност у различитим колонама, догађај ажурирања у табели клијената који ће извршити уметање, а њен администратор администратор је роот
Избришите окидач из базе података
ДРОП ТРИГГЕР окидач
Како позвати ускладиштене процедуре у окидачу
Анализираћемо пример за базу података о производима и да приликом генерисања продаје продавац мора генерисати и провизију коју зарађује, онда се провизија по продаји мора ажурирати након уметања или генерисања нове продаје или би то могло бити и након генерисања фактуре , у зависности од пословног модела који се развија, али је довољно да се пример разуме.
Креирамо ускладиштену процедуру која ће израчунати провизију на основу количине продатог производа.
ДЕЛИМИТЕР $$ ЦРЕАТЕ ПРОЦЕДУРЕ па_цоммиссион` (ИН п_вендор ИД ИНТ, ИН п_продуцт ИД ИНТ, ИН количина ИНТ) ПОЧНИТЕ ОГЛАСИТИ тоталцоммиссион ИНТ ДЕФАУЛТ 0; Изаберите провизију од производа где је продуцтид = п_продуцтид; укупна провизија = провизија * п_износ уметните у вредности провизија (продавац, провизија) (продајна цена, продукција, провизија, укупна провизија); КРАЈ $$ ДЕЛИМИТЕР $$
Сада креирамо нови покретач продаје. Овај окидач ће се извршити након убацивања продаје и узимања података о овом или појединостима продаје.
НАПРАВИ ТРИГГЕР нову продају ПОСЛЕ УСТАВЉАЊА у продају ЗА СВАКИ РЕД ПОЧНИТЕ ПОЗИВ па_цоммиссионс (нев.ид продавач, нев.идпродуцт, нев.куантити); ЕНД $$
Можемо видети да је ускладиштена процедура позвана да би могла да прегледа податке о производу, провизију и тако може аутоматски да израчуна износ провизије.
Такође бисмо могли да га учинимо сложенијим тако што ћемо знати да ли провизија и продаја већ постоје, затим их изменити и не уметати поново.
За ово бисмо такођер требали препознати број продаје или фактуре, затим тражимо да ли производ већ постоји у броју продаје и продаватеља, то значи да већ постоји и да је наручен, стога ћемо измијенити, а не уносити као нову продају.
одабери цоунт (продуцтид)> 0 у већ постоји од провизија где је селлерид = селлерид и салесид = салесид; ако већ постоји, УПДАТЕ комисије постављају провизију = укупну провизију где је селлерид = селлерид и салесид = салесид; друго унесите вредности провизија (продавац, провизија) (селлерид, продуцтид, Цоммиссион, тоталцоммиссион); енд иф;Да ли вам се допао и помогао овај водич?Можете наградити аутора притиском на ово дугме да бисте му дали позитиван поен