Похрањене процедуре и окидачи у МиСКЛ -у

Преглед садржаја

Неки алати које пружа МиСКЛ енгине за базе података су ускладиштене процедуре, функције и окидач, који се користе за обављање трансакција или операција као што је уметање или мењање записа.

Похрањене процедуре су мали програми развијени у СКЛ коду. Похрањена процедура је скуп СКЛ наредби које су похрањене заједно с базом података.

Предност ускладиштене процедуре је што је можемо креирати у било ком уређивачу текста, па чак и на серверу, извршава је механизам базе података и није доступна корисницима, већ само администратору.

Похрањена процедура шаље своје резултате апликацији тако да их приказује на екрану избегавајући преоптерећење сервера, у водичу:

  • МИСКЛ ускладиштене процедуре - креирање, упити и уметци података

Објаснио сам како их креирати, овде ћемо додати функције и покретаче. Видећемо пример у бази података некретнине коју ћемо назвати станом за изнајмљивање, а затим ћемо креирати табеле.

 - Структура табеле за табелу `некретнине` НАПРАВИ ТАБЕЛУ АКО НЕ ПОСТОЈИ` некретнине` (`ид` инт (11) НОТ НУЛЛ,` усерид` инт (11) ДЕФАУЛТ НУЛЛ, `идтипе проперти` инт (6) ДЕФАУЛТ '0 ', `прице` децимал (10,2) ДЕФАУЛТ' 0.00 ',` Цоммиссион` децимал (10,0) НОТ НУЛЛ, `десцриптион` тект,` хигхдате` дате ДЕФАУЛТ' 0000-00-00 ', `провинце ид` инт (10) ДЕФАУЛТ НУЛЛ, `идлоцалидад` инт (10) ДЕФАУЛТ НУЛЛ,` аддресс` варцхар (150) ДЕФАУЛТ НУЛЛ, `флоор анд апартмент` варцхар (100) ДЕФАУЛТ НУЛЛ,` бетвеен_стреетс` тект, `идоператион` инт (100 ) ДЕФАУЛТ НУЛЛ, `феатуред` цхар (3) ДЕФАУЛТ 'но',` имаге1` варцхар (255) ДЕФАУЛТ НУЛЛ, `имаге2` варцхар (255) ДЕФАУЛТ НУЛЛ,` имаге3` варцхар (255) ДЕФАУЛТ НУЛЛ, `имаге4` варцхар (255) ДЕФАУЛТ НУЛЛ, `олд` варцхар (100) ДЕФАУЛТ НУЛЛ,` мт2цоверед` инт (11) ДЕФАУЛТ НУЛЛ, `лот_сурфаце` инт (11) ДЕФАУЛТ НУЛЛ,` енаблед` енум ('иес', 'но') НОТ НУЛЛ ДЕФАУЛТ 'си') ЕНГИНЕ = МиИСАМ АУТО_ИНЦРЕМЕНТ = 196 ЗАДОВОЉНА ЦХАРСЕТ = латин1; - Индекси табеле `некретнине` АЛТЕР ТАБЕЛА` некретнине` ДОДАЈ ПРИМАРНИ КЉУЧ (` ид`);

Сада ћемо развити ускладиштену процедуру за сваку трансакцију за постављање упита, уметање, измену и брисање записа.

Можемо користити Пхпмиадмин или менаџер попут Хеидискл -а који је бесплатан и ради на Виндовс -у или Линук -у са Вине -ом.

Креирамо ускладиштену процедуру за испитивање табеле некретнина:

 ДЕЛИМИТЕР // ЦРЕАТЕ ПРОЦЕДУРЕ па_листаинмуеблес () БЕГИН СЕЛЕЦТ * ФРОМ пропертиес; ЕНД // ДЕЛИМИТЕР;
МИСКЛ разуме да се исказ завршава тачком и зарезом. Тхе ДЕЛИМИТЕР изјава промените знак завршетка у било који други знак, по договору // користи се за означавање краја ускладиштене процедуре тако да МиСКЛ не заврши ускладиштену процедуру када наиђе на прву тачку и зарез.

Можемо ићи до Картица Рутинес да видите сваку трансакцију коју смо креирали и одатле можемо да мењамо, извршавамо, извозимо или бришемо код.

За извршавање процедуре складиштењем користимо Команда ЦАЛЛ од СКЛ картица или такође из програмског језика попут .НЕТ -а или Јаве. Затим позивамо ускладиштену процедуру креирану командом.

 ЦАЛЛ па_листаинмуеблес ();

Затим ћемо креирати ускладиштену процедуру за уметање својства, за то ће нам бити потребни параметри типа ИН, односно додељиваћемо податке и улазне променљиве сачуваној процедури за обављање трансакције, у овом случају их сачувати у бази података.

 ДЕЛИМИТЕР // ЦРЕАТЕ ПРОЦЕДУРЕ па_нуевоинмуебле (ИН ид ИНТ, ИН усерид ИНТ, ИН прице ДЕЦИМАЛ, ИН Цоммиссион ДЕЦИМАЛ) БЕГИН ИНСЕРТ ИНТО проперти` (`ид`,` усерид`, `прице`,` Цоммиссион`) ВРЕДНОСТИ (ид, усерид ), цена, провизија) ЕНД // ДЕЛИМИТЕР;

ЕНЛАРГЕ

Затим можемо извршити ускладиштену процедуру позивањем и додељивањем параметара.

 ЦАЛЛ `па_невинмуебле` ('12 ',' 15 ',' 10.00 ',' 0.05 ')
Такође можемо унети податке покретањем рутине из Пхпмиадмина.

ЕНЛАРГЕ

Затим ћемо креирати ускладиштену процедуру за уређивање својства из уређивача Пхпмиадмин, у овом случају ћемо само променити цену.

Улоге можемо креирати из поља Дефинер где можемо доделити корисника дефинисаног на серверу Мискл, у овом случају роот корисника локалног хоста, тако да може приступити ускладиштеној процедури.
Ако то желимо из СКЛ кода, морамо извршити следеће команде:

 ЦРЕАТЕ ДЕФИНЕР = `роот` @` лоцалхост` ПОСТУПАК `па_едитаринмуебле` (ИН` нова својина` ДЕЦИМАЛНА (10,2), У` ИД својства` ИНТ (11)) ПОЧНИТЕ АЖУРИРАЊЕ СЕТ СЕТ цена = нова некретнина ВХЕРЕ ид = ИД својства ; КРАЈ
Покренете га и завршили сте.

Коришћење окидача или окидача у Мискл -у
Триггер или Триггер у МиСКЛ -у је скуп СКЛ наредби које зависе од ускладиштене процедуре и користе се за аутоматско покретање када се у нашој бази података догоди одређени догађај. Ови догађаји се покрећу трансакцијама или изјавама као што су ИНСЕРТ, УПДАТЕ и ДЕЛЕТЕ.

Пример је када се промена сачува у регистру, аутоматски правимо резервну копију или снимамо датотеку ревизије како бисмо знали који су подаци промењени, када и ко их је променио. Могу се користити за било коју манипулацију која утиче на податке, за подршку или генерисање нових информација.

У наставку ћемо направити табелу ревизије некретнина:

 ЦРЕАТЕ ТАБЛЕ `аудит` (` усер` ВАРЦХАР (200) НУЛЛ ДЕФАУЛТ НУЛЛ, `десцриптион` ТЕКСТ НУЛЛ,` дате` ДАТЕТИМЕ НУЛЛ ДЕФАУЛТ НУЛЛ) ЦОЛЛАТЕ = 'латин1_сведисх_ци' ЕНГИНЕ = ИнноДБ
Направићемо окидач који чува поруку у ревизији ако неко промени цену некретнине.
 ЦРЕАТЕ ДЕФИНЕР = `роот` @` лоцалхост` ТРИГГЕР `реал естате_афтер_упдате` АФТЕР УПДАТЕ ОН` некретнине` ЗА СВАКИ РЕД УМЕТНИТЕ У РЕВИЗИЈУ (корисник, опис, датум) ВРЕДНОСТИ (корисник (), ЦОНЦАТ ('Цена некретнине је промењена', НЕВ.ид, '(', ОЛД.прице, ') би (', НЕВ.прице, ')'), НОВ ())
Овај окидач се аутоматски извршава након ажурирања цене, можемо укључити још поља ако желимо, са ОЛД -ом наводимо поље са вредношћу пре измене, а са НЕВ одређујемо нову унету вредност, са НОВ () одређујемо датум и тренутно време.

Креирамо окидач који ће имати Афтер Упдате он пропертиес као догађај, односно након што дође до ажурирања у табели својстава, у том случају додаћемо корисника који је извршио измену, нову цену и претходну цену.

Извршим ажурирање својства:

 ЦАЛЛ `па_едитаринмуебле` ('80000', '170')
Затим идемо на табелу ревизије и можемо видети промену:

Резултате можемо видети и у извештају у штампаном приказу Пхпмиадмина. Можемо видети како су сачувани подаци који идентификују својство, направљену промену и корисника који ју је направио, такође имамо датум и време када је промена извршена.

Затим ћемо видети још једну могућу апликацију ако се некретнина изнајми, која аутоматски мења свој статус у неактивну или ћемо је учинити недоступном.

За ово морамо имати једноставну табелу где ћемо складиштити која се некретнина изнајмљује, за практичан пример нећемо узети много строгости у податке.

 ЦРЕАТЕ ТАБЛЕ `ренталс` (` ид` ИНТ (10) НОТ НУЛЛ, `проперти ид` ИНТ (10) НОТ НУЛЛ,` тенант ид` ИНТ (11) НОТ НУЛЛ, ПРИМАРИ КЕИ (`ид`)) ЦОЛЛАТЕ = 'латин1_сведисх_ци 'МОТОР = ИнноДБ; 
Затим ћемо креирати ускладиштену процедуру за уметање новог записа у табелу изнајмљивања.
 ЦРЕАТЕ ДЕФИНЕР = `роот` @` лоцалхост` ПОСТУПАК `па_неврентал` (ИН` ИД својства` ИНТ, ИН` станар ид` ИНТ) ЈЕЗИК СКЛ НЕ ДЕТЕРМИНИСТИЧКИ САДРЖИ СКЛ СКЛ СИГУРНОСНИ ДЕФИНЕР КОМЕНТАР '' ИНСЕРТ ИНТО `ренталс` (` ИД својства `,` тенант ид`) ВАЛУЕС (станар ид, станар ид)

А онда је активиран окидач за измену својстава:

 ЦРЕАТЕ ДЕФИНЕР = `роот` @` лоцалхост` ТРИГГЕР `ренталс_афтер_инсерт` АФТЕР ИНСЕРТ ОН` изнајмљује` ЗА СВАКИ РЕД УПДАТЕ некретнина СЕТ = 'не' где је ид = НОВО. Пропертиид
Затим позивамо ускладиштену процедуру где додељујемо ИД својства и ид клијента или закупца које изнајмљујем.
 ПОЗОВИТЕ за ново изнајмљивање (170.11)
Затим идемо на табелу некретнина и требали бисмо видети да је активирана промена стања АКО је активно да НЕ није активно.

Видели смо предности коришћења окидача са ускладиштеним процедурама у МиСКЛ -у за:

  • Ревидирајте и забиљежите догађаје или активности промјене података у табели.
  • Промените стање поља активирањем или одбијањем дозвола и радњи на табели
  • Такође омогућава очување доследности података извршавањем радњи према догађајима који утичу на једну или више табела.
У другом водичу ћемо наставити са програмирањем условних структура и структура које се понављају у ускладиштеним процедурама.

Да ли вам се допао и помогао овај водич?Можете наградити аутора притиском на ово дугме да бисте му дали позитиван поен
wave wave wave wave wave