PhpMyAdmin - Funktioner och utlösare

Innehållsförteckning

Funktionerna liknar mycket Lagrade procedurer (SP), skillnaden ligger i vissa detaljer, den viktigaste är att de bara returnerar ett värde, när en SP kan returnera mer än en, dessutom behöver vi inte en variabel för att lagra det resulterande värdet så det är mycket lättare att använda inom en SELECT .

Skapa en funktionMålet med en funktion är att isolera logiken bakom vissa element så att de är enklare att använda, på så sätt kan vi dokumentera databasen och dess funktion och kunna förenkla de åtgärder i applikationen som kan kommunicera med basen av data. För att skapa en funktion använder vi följande element:

  • De Frågelåda, där vi kan skriva funktionen.
  • Ändringen av avgränsaren.
  • Funktionens redigerings- och manipulationsmekanism.

Låt oss se hur vi definierar en funktion genom ett exempel:

 SKAPA FUNKTION get_country_name (param_country_code CHAR (2)) RETURNS VARCHAR (50) READS SQL DATA BEGIN DECLARE var_country_name VARCHAR (50) DEFAULT 'not found'; VÄLJ beskrivning FRÅN land VAR kod = param_country_code INTO var_country_name; RETURN var_country_name; SLUTET // 
Som vi kan se är syntaxen mycket lik den för SP, bara här definierar vi inte värdena för I Y UT om inte att vi definierar parametrarna som de anger och deklarerar ett enda värde som kommer att vara LÄMNA TILLBAKA.
När vi går till avsnittet av Rutiner På struktursidan i databasen kommer vi att se den återspeglas på följande sätt:

När vi har skapat vår funktion, låt oss se hur vi kan testa den, den här funktionen som vi använder som ett test vad den gör är att konsultera mot en tabell över länder och returnera namnet på ett land när vi ber om en kod, om Om vi ​​inte hittar det, återvänder det oss hittades inte:

 VÄLJ CONCAT ('ca->', get_country_name ('ca'), ', zz->', get_country_name ('zz')) som test; 
Vi väljer helt enkelt en CONCAT för att ansluta resultaten till en sträng och vi kommer att få följande:
 ca-> Kanada, zz-> hittades inte
Som vi kan se är det mycket lättare än att konstruera de frågor som varje land kommer att rådfråga separat.

UtlösareDe Utlösare skiljer sig från funktionerna och Lagrade procedurerDessa behöver inte ringas upp av användaren, de kommer att inträffa när en åtgärd utförs på bordet som de är länkade till, vilket leder oss till den andra skillnaden mellan funktionerna, det är att de är generella; de Utlösare om de är länkade till en specifik tabell.
Låt oss se hur man skapar en Utlösare:

 SKAPA TRIGGER after_book_insert EFTER INSERT ON book FOR EACH ROW BEGIN UPDATE author SET total_page_count = total_page_count + NEW.page_count WHERE id = NEW.author_id; SLUTET // 
Som vi kan se måste vi också definiera en ny avgränsare // inuti sökrutan så att vi kan inkludera alla instruktioner i Utlösare, när det gäller exemplet länkar vi det i Efter infogning det vill säga, efter att ha infört och sedan utfört den definierade åtgärden, hjälper detta databasen att autonomt hantera åtgärder när de händer.

När Utlösare När vi går till tabellstruktursidan ser vi den tillgänglig:

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave