Routine e trigger
Procedure e funzioni memorizzate
Procedure e funzioni si trovano nella barra laterale sotto Funzioni. Clic destro e Apri editor routine per vederne e modificarne la definizione.
L'editor mostra il DDL della routine così come lo riporta il server. Salvare sostituisce la definizione.
Scrivere routine nell'editor SQL
Puoi creare routine anche da una normale scheda dell'editor SQL. La suddivisione delle istruzioni riconosce DELIMITER, quindi un corpo pieno di punti e virgola viene eseguito come una sola istruzione invece di essere spezzato:
DELIMITER $$
CREATE PROCEDURE totali_mensili(IN anno_in INT)
BEGIN
SELECT MONTH(creato_il) AS mese, SUM(totale) AS totale
FROM ordini
WHERE YEAR(creato_il) = anno_in
GROUP BY MONTH(creato_il);
END$$
DELIMITER ;Senza questa gestione il ; dopo ogni istruzione interna chiuderebbe in anticipo la CREATE PROCEDURE e il server la rifiuterebbe — il motivo abituale per cui una routine che funziona in console fallisce in un client grafico.
Trigger
Clic destro su un database e Trigger apre l'editor dei trigger per quel database. Elenca quelli definiti lì e ne mostra il DDL.
I trigger possono essere ispezionati, modificati ed eliminati. Come per le viste, un trigger eliminato non porta con sé nient'altro.
Trigger e operazioni di massa
Un trigger scatta per ogni riga. Durante una grande importazione o un trasferimento dati questo può trasformare un'operazione rapida in una lenta, e può anche duplicare il lavoro che il trasferimento sta già facendo. Il trasferimento dati ha l'opzione Includi trigger proprio perché la scelta sia tua.
Dove compaiono ancora le routine
- Il trasferimento dati può copiare viste, procedure e funzioni in un altro database — anche su un motore diverso, dove il dialetto potrà richiedere aggiustamenti.
- Dump SQL file su un database e ogni backup includono viste, procedure e funzioni — create dopo le tabelle, le viste in ordine di dipendenza. Il dump di singole tabelle non le contiene.
- Dump SQL file su una tabella — e ogni backup del database — include i trigger della tabella. Vengono scritti dopo le righe, quindi il ripristino dei dati non li attiva; i trigger PostgreSQL arrivano con la loro funzione, e i trigger disattivati restano disattivati.
