PhpMyAdmin - Функции и тригери

Съдържание

Функциите са много подобни на Съхранени процедури (SP), разликата се крие в някои подробности, като основната е, че те връщат само една стойност, когато SP може да върне повече от една, освен това не се нуждаем от променлива за съхраняване на получената стойност, така че е много по -лесно да се използва в SELECT .

Създаване на функцияЦелта на функцията е да изолира логиката зад определени елементи, така че те да бъдат по -лесни за използване, по този начин можем да документираме базата данни и нейната работа и да можем да опростим действията на приложението, които биха могли да комуникират с базата на данни. За да създадем функция, ще използваме следните елементи:

  • The Кутия за заявки, където можем да напишем функцията.
  • Смяната на разделителя.
  • Механизмът за редактиране и манипулиране на функцията.

Нека да видим как да дефинираме функция чрез пример:

 CREATE FUNCTION get_country_name (param_country_code CHAR (2)) ВРЪЩА VARCHAR (50) ПРОЧЕТИ SQL ДАННИ ДА ЗАПОЧНЕ ДЕКЛАРИРАНЕ var_country_name VARCHAR (50) DEFAULT 'не е намерен'; SELECT description FROM country WHERE code = param_country_code INTO var_country_name; ВРЪЩАНЕ var_country_name; КРАЙ // 
Както виждаме, синтаксисът е много подобен на този на SP, само че тук не дефинираме стойностите на IN Y ИЗХОД ако не, че дефинираме въведените от тях параметри и декларираме единична стойност, която ще бъде ВРЪЩАНЕ.
Когато отидем в раздела на Рутини На страницата със структурата в базата данни ще я видим отразена по следния начин:

След като създадем нашата функция, нека видим как можем да я тестваме, тази функция, която използваме като тест, това, което прави, е да се консултира с таблица със държави и да върне името на държава, когато поискаме код, в случай на като не го намерим, той ни връща не е намерен:

 SELECT CONCAT ('ca->', get_country_name ('ca'), ', zz->', get_country_name ('zz')) като тест; 
Ние просто правим селекция с CONCAT, за да съединим резултатите в низ и ще получим следното:
 ca-> Канада, zz-> не е намерен
Както виждаме, това е много по -лесно от конструирането на заявки, които всяка страна ще разглежда отделно.

ТригериThe Тригери са различни от функциите и Съхранени процедуриТе не трябва да бъдат извиквани от потребителя, те ще се появят, когато се изпълни действие върху таблицата, към която са свързани, което ни води до другата разлика на функциите, тя е, че те са общи; на Тригери ако са свързани с конкретна таблица.
Нека да видим как да създадем Тригер:

 CREATE TRIGGER after_book_insert СЛЕД ИНСЕРТИРАНЕ НА книга ЗА ВСЕКИ РЕД НАЧАЛО АКТУАЛИЗАЦИЯ автор SET total_page_count = total_page_count + NEW.page_count WHERE id = NEW.author_id; КРАЙ // 
Както виждаме, ние също трябва да дефинираме нов разделител // в полето за заявка, така че да можем да включим всички инструкции на Тригер, в случая с примера го свързваме в След Вмъкване тоест, след като направите вмъкване и след това изпълните определеното действие, това помага на базата данни да управлява автономно действията, докато се случват.

Веднъж Тригер Когато отидем на страницата със структурата на таблицата, ще я видим налична:

wave wave wave wave wave