angelo.pezzullo
pubblicato più di 3 anni fa

Creare Trigger MySQL

Ecco come creare trigger in MySQL

Un trigger è una procedura o routine SQL che specifica le operazioni automatizzate da eseguire sul database al verificarsi di un evento di tipo UPDATE, INSERT o DELETE su una persistente tabella. Un trigger può attivare anche altri trigger o store procedure.

L’introduzione di trigger all’interno di una Base di Dati permette la gestione automatica di particolari procedure in risposta a determinati eventi esterni. Le Basi di Dati di questo tipo vengono dette Basi di Dati attive. I trigger rendono reattivo il comportamento del sistema alle sollecitazioni esterne.

Il vantaggio introdotto dai trigger è lo spostamento di alcuni controlli e procedure automatiche da livello applicativo al livello di schema.

La sintassi per la creazione di un trigger in MySQL è la seguente:

1CREATE [DEFINER = { user | CURRENT_USER }]
2        TRIGGER nome_trigger trigger_time
3        trigger_event
4        ON tabella_target
5        FOR EACH ROW
6        trigger_stmt
  • DEFINER determina i privilegi da applicare quando il trigger è attivo; *trigger_time, rappresenta il tipo di trigger: BEFORE o AFTER;
  • trigger_event, indica il tipo di primitiva che attiva il trigger:
    • INSERT: il trigger è attivato quando una nuova tupla è inserita nella tabella target; ad esempio, attraverso le primitive INSERT, LOAD DATA e REPLACE;
    • UPDATE: il trigger è attivato quando una tupla della tabella target viene modificata; ad esempio, attraverso la primitiva UPDATE;
    • DELETE: il trigger è attivato quando una tupla della tabella target viene cancellata; ad esempio, attraverso le primitive DELETE e REPLACE;
  • trigger_stmt, è la primitiva SQL da eseguire, una volta che il trigger è attivo; se si desidera eseguire una procedura SQL, si può utilizzare il costrutto BEGIN…END.

Per accedere alle colonne della tabella target si utilizzano gli alias OLD e NEW.

  • OLD.col_name (read-only) si riferisce alla colonna della tabella target prima della modifica effettuata dall’evento associato al trigger;
  • NEW.col_name si riferisce alla colonna della tabella target dopo la modifica effettuata dall’evento.

I trigger non possono invocare procedure che restituiscono dati all’utente o che utilizzano SQL dinamico; inoltre non possono invocare procedure che esplicitamente iniziano o terminano una transazione (primitive START TRANSACTION, END TRANSACTION, COMMIT o ROLLBACK).

In MySql non possono essere creati due trigger con evento e tipo evento uguali, su una stessa tabella target.

Condividi su:

Esprimi un voto:

  • Current rating: 0.0/5
  • 1
  • 2
  • 3
  • 4
  • 5

Argomenti chiave:

Ultimi commenti Ultimi commenti

Esegui il Login oppure registrati per scrivere un commento.
Cerca nel sito...
Ultime recipes

Un utilissimo tool di shell che effettua un dettagliato e comodo report su MySQL MySQL Report un tool di shell per tenere tutto sotto controllo

Un utilissimo tool di shell che effettua un dettagliato e comodo report su MySQL


Vai alla recipe

Un utilissimo tool per sniffare il traffico Client/Server TCP/IP di MySQL MySQLSniffer sniffare il traffico TCP di MySQL

Un utilissimo tool per sniffare il traffico Client/Server TCP/IP di MySQL


Vai alla recipe

Verificare l'integrità, riparare gestire chiavi e memoria di tabelle MyISAM attraverso myisamchk riparare file MyISAM

Verificare l'integrità, riparare gestire chiavi e memoria di tabelle MyISAM attraverso il file myisamchk


Vai alla recipe

Un tool per comprimere le tabelle MyISAM fino a oltre il 50% myisampack comprimere file MyISAM

Un tool per comprimere le tabelle MyISAM fino a oltre il 50%


Vai alla recipe

mysqlshow le info di base sui database, tabelle e colonne senza utilizzare alcun mysqlshow visualizzare le informazioni sul database MySQL

mysqlshow le info di base sui database, tabelle e colonne senza utilizzare alcun client


Vai alla recipe

Utilizzando UNION / UNION ALL su campi int unsigned zerofill,
ho notato che MysqlUNION / UNION ALL su campi int unsigned zerofill. di DebUsr
Vai al tip

Utilizzo di funzioni come alias di campo tramite l'impiego di prepared statementReport con alias di campo dinamici di john_revelator
Vai al tip

Può capitare che sia necessario eseguire un dump di database in formato Comma SeparatedEsecuzione dump in formato CSV (tabelle in engine MyIsam esportate in formato CSV) di ghigomatto
Vai al tip

E' possibile eseguire le query SQL contenute in un file di testo. Questo è utileEseguire le query da un file di testo di Sante Caserio
Vai al tip

Se vogliamo fare il backup di tutti i database con mysqldump, e ne abbiamo parecchiFare il backup di tutti i database di Sante Caserio
Vai al tip

Salve,vorrei chiedervi un aiutino per una query che mi infastidisce un pò.
Ho 4 aiuto per una query! di fighterdorico Vai al topic

Salve,vorrei chiedervi un aiutino per una query che mi infastidisce un pò.
Ho 4 aiuto per una query! di fighterdorico Vai al topic

Salve,vorrei chiedervi un aiutino per una query che mi infastidisce un pò.
Ho 4 aiuto per una query! di fighterdorico Vai al topic

Salve a tutti.

Ho una tabella con lettere accentate.
Le lettere vengono visualizzate ordinamento tabelle di ditch Vai al topic

Salve a tutti.

Ho una tabella con lettere accentate.
Le lettere vengono visualizzate ordinamento tabelle di ditch Vai al topic