PhpMyAdmin - funkce a spouště

Obsah

Funkce jsou velmi podobné Uložené procedury (SP), rozdíl spočívá v některých detailech, hlavní je, že vracejí pouze jednu hodnotu, když SP může vrátit více než jednu, navíc nepotřebujeme proměnnou pro uložení výsledné hodnoty, takže je mnohem jednodušší použít v rámci SELECT .

Vytvoření funkceCílem funkce je izolovat logiku za určitými prvky, aby se snadněji používaly. Tímto způsobem můžeme dokumentovat databázi a její fungování a být schopni zjednodušit akce aplikace, které by mohly komunikovat se základnou data. K vytvoření funkce použijeme následující prvky:

  • The Dotazovací box, kde můžeme zapsat funkci.
  • Změna oddělovače.
  • Mechanismus úprav a manipulace funkce.

Podívejme se, jak definovat funkci na příkladu:

 VYTVOŘIT FUNKCI get_country_name (param_country_code CHAR (2)) RETURNS VARCHAR (50) READS SQL DATA BEGIN DECLARE var_country_name VARCHAR (50) DEFAULT 'not found'; VYBRAT popis ZE země KDE kód = param_country_code INTO var_country_name; RETURN var_country_name; KONEC // 
Jak vidíme, syntaxe je velmi podobná syntaxi SP, pouze zde nedefinujeme hodnoty V Y VEN pokud ne, definujeme parametry, které zadávají, a deklarujeme jedinou hodnotu, která bude VRÁTIT SE.
Když přejdeme do sekce Rutiny Na stránce struktury v databázi uvidíme, že se to projeví následujícím způsobem:

Poté, co jsme vytvořili naši funkci, podívejme se, jak ji můžeme otestovat. Tato funkce, kterou používáme jako test, provádí konzultaci s tabulkou zemí a vrátí název země, když požadujeme kód, v případě nenalezení, vrací nám to nenalezeno:

 ZVOLTE CONCAT ('ca->', get_country_name ('ca'), ', zz->', get_country_name ('zz')) jako test; 
Jednoduše provedeme výběr pomocí CONCAT, abychom spojili výsledky v řetězci a získáme následující:
 ca-> Kanada, zz-> nenalezeno
Jak vidíme, je to mnohem snazší než vytváření dotazů, které bude každá země konzultovat samostatně.

SpouštěThe Spouště se liší od funkcí a Uložené proceduryTy nemusí být vyvolávány uživatelem, nastanou, když je provedena akce na stole, se kterým jsou spojeny, což nás přivádí k dalšímu rozdílu funkcí, je to, že jsou obecné; Spouště pokud jsou propojeny s konkrétní tabulkou.
Pojďme se podívat, jak vytvořit a Spoušť:

 VYTVOŘIT SPOUŠTĚČ after_book_insert PO INSERT ON book FOR EACH ROW BEGIN UPDATE author SET total_page_count = total_page_count + NEW.page_count WHERE id = NEW.author_id; KONEC // 
Jak vidíme, musíme také definovat nový oddělovač // uvnitř pole dotazu, abychom mohli zahrnout všechny pokyny Spoušť, v případě příkladu jej propojíme v Po vložení to znamená, že po vložení a provedení definované akce to pomůže databázi autonomně spravovat akce, které se dějí.

Jednou Spoušť Když přejdeme na stránku struktury tabulky, uvidíme, že je k dispozici:

wave wave wave wave wave