天天看點

mysql分隔符聲明_MySQL中的分隔符

小編典典

;在定義函數,存儲過程和觸發器(其中必須定義多個語句)時,通常使用預設值以外的分隔符

。您可以定義一個不同的定界符,例如$$,該定界符用于定義整個過程的結尾,但是在其中,每個單獨的語句均以終止;。這樣,當代碼在mysql用戶端中運作時,用戶端可以知道整個過程在何處結束,并将其作為一個單元執行,而不是在其中執行各個語句。

請注意,DELIMITER關鍵字僅是指令行mysql用戶端(和某些其他用戶端)的功能,而不是正常的MySQL語言功能。如果您嘗試将其通過程式設計語言API傳遞給MySQL,它将無法正常工作。其他一些用戶端(如PHPMyAdmin)具有其他方法來指定非預設定界符。

例:

DELIMITER $$

DROP PROCEDURE my_procedure$$

CREATE PROCEDURE my_procedure ()

BEGIN

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;

END$$

DELIMITER ;

嘗試DELIMITER與不支援它的用戶端一起使用将導緻将其發送到伺服器,伺服器将報告文法錯誤。例如,使用PHP和MySQLi:

$mysqli = new mysqli('localhost', 'user', 'pass', 'test');

$result = $mysqli->query('DELIMITER $$');

echo $mysqli->error;

錯誤:

您的SQL文法有誤;檢查與您的MySQL伺服器版本相對應的手冊,以在第1行的’DELIMITER $$’附近使用正确的文法

2020-05-17