Skip to content

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:

sql
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.