Cosa fa DELIMITER // in un trigger?

DELIMITER // 

Qual è l’uso di esso?

Cambia il delimitatore di istruzioni da ; a // . Questo è così che puoi scrivere ; nella definizione del trigger senza che il client MySQL interpreti erroneamente questo nel senso che hai finito con esso.

Nota che quando si cambia, è DELIMITER ; , non DELIMITER; come ho visto persone provare a fare.

In SQL si chiude ogni istruzione con un delimitatore, che è di default un punto e virgola (;). In un trigger è necessario scrivere più istruzioni, ciascuna che termina con un punto e virgola. Per dire a MySQL che quei punti e virgola non sono la fine dell’istruzione trigger, si modifica temporaneamente il delimitatore; a //, così MySQL saprà che l’istruzione trigger termina solo quando econunter un //.

Semplice imposta la fine del delimitatore dell’istruzione ( ; e virgola nello standard, SQL predefinito). Cambiare il personaggio potrebbe essere utile se vuoi usarlo ; nel tuo SQL, o stai usando SQL incorporato (dove potrebbe causare confusione). allo stesso modo // nel tuo esempio potrebbe portare a confusione nell’SQL incorporato, o potresti volerlo usare nel tuo SQL. Quindi, utilizza DELIMITER per impostare il delimitatore appropriato per la tua applicazione e le tue esigenze.

Aggiungi un esempio:
Quando lavoravamo con il comando mysql shell, abbiamo usato ; delimitatore per chiudere ogni dichiarazione. Tuttavia, nel caso in cui desideriamo creare le procedure e i trigger del negozio, è necessario aggiungere il punto ; virgola ; anche in queste dichiarazioni.

 delimiter // create trigger log_students after insert on students for each row begin insert into log_students(change_by, change_at) values(USER(), NOW()); end// delimiter ; 

Leggi la documentazione di (ummmm) mysql .

delimiter è il marcatore per la fine di ogni comando inviato al client della riga di comando mysql.

delimiter non è solo correlato ai trigger, ma definire i trigger e le stored procedure è un caso di utilizzo forte, in quanto si desidera che contengano il punto e virgola (;), che altrimenti è il delimiter predefinito.