Délimiteurs autres que la valeur par défaut ;
sont généralement utilisés lors de la définition des fonctions, des procédures stockées et déclencheurs dans laquelle vous devez définir plusieurs déclarations. Vous définissez un délimiteur différent, comme $$
celui utilisé pour définir la fin de toute la procédure, mais à l'intérieur de celui-ci, les instructions individuelles se terminent chacune par ;
. De cette façon, lorsque le code est exécuté dans le mysql
client, le client peut dire où se termine la procédure entière et l'exécuter en tant qu'unité plutôt que d'exécuter les instructions individuelles à l'intérieur.
Notez que le DELIMITER
mot-clé est mysql
uniquement une fonction du client de ligne de commande (et de certains autres clients) et non une fonction de langage MySQL standard. Cela ne fonctionnera pas si vous essayez de le transmettre via une API de langage de programmation à MySQL. Certains autres clients comme PHPMyAdmin ont d'autres méthodes pour spécifier un délimiteur autre que celui par défaut.
Exemple:
DELIMITER $$
/* This is a complete statement, not part of the procedure, so use the custom delimiter $$ */
DROP PROCEDURE my_procedure$$
/* Now start the procedure code */
CREATE PROCEDURE my_procedure ()
BEGIN
/* Inside the procedure, individual statements terminate with ; */
CREATE TABLE tablea (
col1 INT,
col2 INT
);
INSERT INTO tablea
SELECT * FROM table1;
CREATE TABLE tableb (
col1 INT,
col2 INT
);
INSERT INTO tableb
SELECT * FROM table2;
/* whole procedure ends with the custom delimiter */
END$$
/* Finally, reset the delimiter to the default ; */
DELIMITER ;
Toute tentative d'utilisation DELIMITER
avec un client qui ne le prend pas en charge entraînera son envoi au serveur, ce qui signalera une erreur de syntaxe. Par exemple, en utilisant PHP et MySQLi:
$mysqli = new mysqli('localhost', 'user', 'pass', 'test');
$result = $mysqli->query('DELIMITER $$');
echo $mysqli->error;
Erreurs avec:
Vous avez une erreur dans votre syntaxe SQL; vérifiez le manuel qui correspond à votre version de serveur MySQL pour la bonne syntaxe à utiliser à côté de 'DELIMITER $$' à la ligne 1