Mysql
 sql >> Database >  >> RDS >> Mysql

come eseguire il comando mysql DELIMITER

Probabilmente non è necessario modificare il delimitatore.

Il delimitatore è necessario nella CLI per dire dove finisce l'istruzione SQL, perché la CLI continuerà a leggere ed eseguire più istruzioni fino a quando non le dirai di fermarsi (ad esempio, con exit o Control-D). Ma quello che legge in realtà è solo un flusso di caratteri; in qualche modo ha bisogno di capire dove finisce un'affermazione e inizia la successiva. Questo è ciò che fa il delimitatore.

In PHP, ogni chiamata di funzione esegue un'istruzione. Non possono esserci più istruzioni in una chiamata di funzione, quindi non è necessario un modo per delimitarle. L'istruzione è l'intera stringa. Questo è vero per il vecchio mysql_query così come il nuovo mysqli_query e DOP. Ovviamente c'è mysqli_multi_query se vuoi davvero passare più query a una funzione.

Nel caso di una stored procedure/trigger/funzione/ecc., possono esserci più istruzioni, ma sono gestite da MySQL stesso (ed è sempre ; , PER QUANTO NE SO). Per quanto riguarda PHP, questa è ancora un'affermazione.

L'impostazione del delimitatore che vedi in phpMyAdmin viene probabilmente utilizzata per dividere le istruzioni e probabilmente viene eseguita nel codice PHP. Deve farlo perché accetta l'input dell'utente costituito da più istruzioni, ma deve passare solo un'istruzione per chiamata di funzione. (Non ho controllato il codice phpMyAdmin per esserne completamente sicuro).