PhpMyAdmin - Funzioni e trigger

Sommario

Le funzioni sono molto simili a Procedure memorizzate (SP), la differenza sta in alcuni dettagli, il principale è che restituiscono un solo valore, quando un SP può restituirne più di uno, inoltre non abbiamo bisogno di una variabile per memorizzare il valore risultante quindi è molto più facile da usare all'interno di un SELECT .

Creazione di una funzioneL'obiettivo di una funzione è isolare la logica dietro determinati elementi in modo che siano più facili da usare, in questo modo possiamo documentare il database e il suo funzionamento ed essere in grado di semplificare le azioni dell'applicazione che potrebbe comunicare con la base di dati. Per creare una funzione utilizzeremo i seguenti elementi:

  • Il Casella delle domande, dove possiamo scrivere la funzione.
  • La modifica del delimitatore.
  • Il meccanismo di modifica e manipolazione della funzione.

Vediamo come definire una funzione attraverso un esempio:

 CREATE FUNCTION get_country_name (param_country_code CHAR (2)) RETURNS VARCHAR (50) READS SQL DATA BEGIN DECLARE var_country_name VARCHAR (50) DEFAULT 'non trovato'; SELECT descrizione FROM country WHERE code = param_country_code INTO var_country_name; RETURN var_country_name; FINE // 
Come si vede, la sintassi è molto simile a quella di SP, solo qui non definiamo i valori di INFUORI se no che definiamo i parametri che inseriscono e dichiariamo un unico valore che sarà il RESTITUZIONE.
Quando andiamo alla sezione di routine Nella pagina di struttura del Database lo vedremo riflesso nel seguente modo:

Dopo aver creato la nostra funzione, vediamo come possiamo testarla, questa funzione che usiamo come test ciò che fa è consultare una tabella di paesi e restituire il nome di un paese quando chiediamo un codice, in caso di non trovandolo, ci restituisce non trovato:

 SELECT CONCAT ('ca->', get_country_name ('ca'), ', zz->', get_country_name ('zz')) come test; 
Facciamo semplicemente una selezione con un CONCAT per unire i risultati in una stringa e otterremo quanto segue:
 ca-> Canada, zz-> non trovato
Come si vede, è molto più semplice che costruire le query che ogni Paese consulterà separatamente.

TriggerIl Trigger sono diverse dalle funzioni e Procedura di archiviazioneQuesti non hanno bisogno di essere chiamati dall'utente, si verificheranno quando viene eseguita un'azione sulla tabella a cui sono collegati, il che ci porta all'altra differenza delle funzioni, è che sono generali; il Trigger se sono collegati a una tabella specifica.
Vediamo come creare un Grilletto:

 CREA TRIGGER after_book_insert DOPO INSERIRE SUL libro PER OGNI RIGA INIZIA AGGIORNAMENTO SET autore total_page_count = total_page_count + NEW.page_count WHERE id = NEW.author_id; FINE // 
Come possiamo vedere, dobbiamo anche definire un nuovo delimitatore // all'interno della casella della query in modo da poter includere tutte le istruzioni del Grilletto, nel caso dell'esempio lo colleghiamo nel Dopo l'inserimento cioè, dopo aver effettuato un inserimento e quindi eseguito l'azione definita, questo aiuta il Database a gestire autonomamente le azioni man mano che si verificano.

una volta che Grilletto Quando andiamo alla pagina della struttura della tabella la vedremo disponibile:

wave wave wave wave wave