Съдържание
PostgreSQL ни позволява да използваме различни езици за изпълнение на функции, тази функционалност е доста полезна и я прави една от най -гъвкавите и мощни бази данни, но също така ни позволява да правим функционира като тригери, тоест функции, които автоматично откриват какво действие се е случило и задействат различно действие, тоест ако вмъкнем в таблица например a спусък да актуализирате в друг, да поставите много основна операция за това какво е тригер.Функции като тригери
Никой полезен двигател на база данни не трябва да бъде без възможност за използване тригери за автоматично откриване и обработка на промени в данните. PostgreSQL предлага тригери на ниво изявление и ниво на запис; тези, които са на ниво изречение, се изпълняват веднъж за всяко изречение, докато тези, които са на нивото на регистрите, могат да се изпълняват многократно, например, ако направим АКТУАЛИЗИРАНЕ което засяга 1500 записа, задействането на ниво изречение ще се изпълни само веднъж, докато задействането на записа ще се изпълни до 1500 пъти.
Друг важен момент в тази тема е разграничението между инструкциите ПРЕДИ, DESPUES DE и ВМЕСТО НА в спусък.
Тригер, с който работи ПРЕДИ се задейства преди изпълнението на командата, даваща възможност за промяна или отмяна или манипулиране на данните, преди те да се променят, а СЛЕД задействане тя се задейства след изпълнението на промяната, като по този начин дава възможност да се получат вече променените данни, този тип тригер се използва най -вече в регистрационни файлове и функции за репликация, ВМЕСТО на спусъка Той се изпълнява вместо действието, което обикновено би било извършено, а друга особеност на това е, че работи само с изгледите.
Изградете функция с Trigger
Тъй като когато говорим за функции, знаем, че можем да използваме други езици, за да ги изпълняваме, в случай на функции като тригери е възможно също така да се използва почти всеки език, но PL / pgSQL Любимо е да се изпълнят тези задачи, затова следният пример, който ще видим на изображението, ще бъде направен на този език, след като видим примера, ще го обясним подробно:
1. Функцията е дефинирана като тригер и може да се използва във всяка таблица, която има колона upd_ts. Стойността на тази колона ще бъде променена преди връщане. Обаждането се осъществява на събитието ПРЕДИ защото ако се използва в DESPUES DE всички промени в новия запис ще бъдат игнорирани.
2. Спусъкът ще се задейства, преди записът да се съхрани.
3. Тази функционалност, която е налична само в PostgreSQL 9.0 или по -висока ни позволява да променяме само реално засегнатите записи, в предишните версии е било необходимо да се правят сравнения между старите и новите полета, но това не се поддържа за събитието INSTEAD OF.
4. Свързваме тригера с таблицата.
С това приключваме този урок, в който видяхме как да създадем тригер, който ще бъде внедрен във функция, в допълнение към знанието какви събития можем да използваме, когато имаме нужда от тях.Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка