Ok, yo no se mucho de mysql, pero si se lo que es delimiter, solo que no se como explicarlo jeje pero hare el intento.
Supongamos que tienes dos instrucciones, como mysql sabe donde termina una y empieza la otra?? pues facil, donde este el ; ahi termino una y la que sigue logicamente es la otra, algo asi:
Código:
INSERT INTO tabla1 VALUES (1,'bla bla','prueba');
SELECT * FROM tabla1;
De esa forma le estas diciendo que primero corra INSERT INTO tabla1... y luego haga el SELECT * FROM..., todo claro hasta ahora? bien, si no entiendes algo me avisas.
Pero ahora imaginate que tienes un store procedure, que es como una funcion, usando ; no puedes hacerlo porque la funcion tiene muchas instrucciones por tanto necesitas muchos ; imaginate algo asi:
Código:
INSERT INTO tabla1 VALUES (1,'bla bla','prueba');
SELECT * FROM tabla1;
INSERT INTO tabla2 VALUES (2,'bla bla','prueba');
SELECT * FROM tabla2;
INSERT INTO tabla3 VALUES (3,'bla bla','prueba');
SELECT * FROM tabla3;
y supongamos que quieres meter eso en un SP (store procedure) para que solamente tengas que hacer esto:
y al hacer eso el procedure correra todas las lineas que agregaste. Pues para que el mysql sepa de donde a donde va el procedure debes usar DELIMITER, por ejemplo
Código:
DELIMITER $$
INSERT INTO tabla1 VALUES (1,'bla bla','prueba');
SELECT * FROM tabla1;
INSERT INTO tabla2 VALUES (2,'bla bla','prueba');
SELECT * FROM tabla2;
INSERT INTO tabla3 VALUES (3,'bla bla','prueba');
$$
DELIMITER;
SELECT * FROM tabla3;
En ese caso le estas diciendo que desde donde dice $$ hasta donde dice $$ (de arriba hacia abajo) todo eso es lo que va dentro del procedure y no simplemente hasta el ;
Espero haberme explicado bien, soy pesimo explicando pero si tienes dudas me avisas.
Ahh y para entender mejor puedes buscar como crear store procedures para que veas muchos ejemplos de Delimiter
Suerte!!