Il delimitatore predefinito di MySQL è ;
che viene utilizzato per un'istruzione nella riga di comando, qualcosa come
select * from users ;
Quando scrivi un trigger o una stored procedure per eseguire l'intero codice, mysql deve capire che è un blocco di codice/query.
Se non viene fornito alcun delimitatore, quando mysql incontra qualsiasi ;
all'interno della procedura del negozio o del trigger lo penserà come un'unica istruzione e proverà ad eseguirlo. Quindi dobbiamo fornire un delimitatore per la procedura di archiviazione o il trigger e fare in modo che mysql capisca che qualsiasi cosa all'interno di quel delimitatore è un insieme completo di codice.
Quindi nel tuo esempio
SELECT * FROM products;
farà parte dell'istruzione completa quando è presente un delimitatore diverso da ;
è fornito all'inizio.