PhpMyAdmin - Functies en triggers

Inhoudsopgave

De functies lijken erg op: Opgeslagen procedures (SP), het verschil zit in enkele details, de belangrijkste is dat ze slechts één waarde retourneren, wanneer een SP er meer dan één kan retourneren, bovendien hebben we geen variabele nodig om de resulterende waarde op te slaan, dus het is veel gemakkelijker te gebruiken binnen een SELECT .

Een functie makenHet doel van een functie is om de logica achter bepaalde elementen te isoleren zodat ze gemakkelijker te gebruiken zijn, op deze manier kunnen we de database en de werking ervan documenteren en de acties van de applicatie die zou kunnen communiceren met de basis van gegevens. Om een ​​functie te maken gebruiken we de volgende elementen:

  • De Querybox, waar we de functie kunnen schrijven.
  • De verandering van het scheidingsteken.
  • Het bewerkings- en manipulatiemechanisme van de functie.

Laten we eens kijken hoe we een functie kunnen definiëren aan de hand van een voorbeeld:

 CREATE FUNCTIE get_country_name (param_country_code CHAR (2)) RETURNS VARCHAR (50) LEEST SQL-GEGEVENS BEGIN VERKLAREN var_country_name VARCHAR (50) STANDAARD 'niet gevonden'; SELECT beschrijving FROM land WHERE code = param_country_code INTO var_country_name; RETURN var_country_name; EINDE // 
Zoals we kunnen zien, lijkt de syntaxis erg op die van de SP, alleen hier definiëren we niet de waarden van IN Y UIT zo niet, dan definiëren we de parameters die ze invoeren en declareren een enkele waarde die de . zal zijn OPBRENGST.
Als we naar de sectie gaan van routines Op de structuurpagina in de database zullen we dit op de volgende manier weerspiegeld zien:

Nadat we onze functie hebben gemaakt, laten we eens kijken hoe we deze kunnen testen. Deze functie die we gebruiken als een test wat het doet, is een tabel met landen raadplegen en de naam van een land retourneren wanneer we om een ​​code vragen, in het geval van niet vinden, keert het ons terug niet gevonden:

 SELECTEER CONCAT ('ca->', get_country_name ('ca'), ', zz->', get_country_name ('zz')) als test; 
We doen gewoon een selectie met een CONCAT om de resultaten in een string samen te voegen en we krijgen het volgende:
 ca-> Canada, zz-> niet gevonden
Zoals we kunnen zien, is het veel gemakkelijker dan de query's op te stellen die elk land afzonderlijk zal raadplegen.

TriggersDe Triggers verschillen van de functies en Opgeslagen proceduresDeze hoeven niet door de gebruiker te worden aangeroepen, ze zullen optreden wanneer een actie wordt uitgevoerd op de tafel waaraan ze zijn gekoppeld, wat ons naar het andere verschil van de functies leidt, namelijk dat ze algemeen zijn; de Triggers als ze aan een specifieke tabel zijn gekoppeld.
Laten we eens kijken hoe we een kunnen maken Trekker:

 MAAK TRIGGER after_book_insert NA INVOEGEN IN boek VOOR ELKE RIJ BEGIN UPDATE auteur SET total_page_count = total_page_count + NEW.page_count WAAR id = NEW.author_id; EINDE // 
Zoals we kunnen zien, moeten we ook een nieuw scheidingsteken // definiëren in het queryvak, zodat we alle instructies van de Trekker, in het geval van het voorbeeld koppelen we het in de Na invoegen dat wil zeggen, na het maken van een invoeging en het uitvoeren van de gedefinieerde actie, helpt dit de database om acties autonoom te beheren wanneer ze plaatsvinden.

Zodra de Trekker Wanneer we naar de tabelstructuurpagina gaan, zien we deze beschikbaar:

wave wave wave wave wave