細細研究MySql中delimiter起到的作用

來源:互聯網
上載者:User

  MySql中delimiter究竟可以起到些什麼作用呢?可能不少人都有這樣的疑惑,下文就為您介紹MySql中delimiter的作用,供您參考。

  MYSQL匯出一個SQL後:

 
  1. DELIMITER $$     
  2. DROP TRIGGER IF EXISTS `updateegopriceondelete`$$     
  3. CREATE     
  4.     TRIGGER `updateegopriceondelete` AFTER  DELETE ON  `customerinfo`     
  5.     FOR EACH ROW BEGIN     
  6. DELETE FROM egoprice  WHERE customerId=OLD.customerId;     
  7.     END$$     
  8. DELIMITER ;  

  其中DELIMITER 定好結束符為"$$", 然後最後又定義為";", MYSQL的預設結束符為";".

  詳細解釋:

  其實就是告訴mysql解譯器,該段命令是否已經結束了,mysql是否可以執行了。

  預設情況下,delimiter是分號;。在命令列用戶端中,如果有一行命令以分號結束,

  那麼斷行符號後,mysql將會執行該命令。如輸入下面的語句

  mysql> select * from test_table;

  然後斷行符號,那麼MySQL將立即執行該語句。

  但有時候,不希望MySQL這麼做。在為可能輸入較多的語句,且語句中包含有分號。

  如試圖在命令列用戶端中輸入如下語句

 
  1. mysql> CREATE FUNCTION `SHORTEN`(S VARCHAR(255), N INT)     
  2. mysql>     RETURNS varchar(255)     
  3. mysql> BEGIN     
  4. mysql> IF ISNULL(S) THEN     
  5. mysql>     RETURN '';     
  6. mysql> ELSEIF N<15 THEN     
  7. mysql>     RETURN LEFT(S, N);     
  8. mysql> ELSE     
  9. mysql>     IF CHAR_LENGTH(S) <=N THEN     
  10. mysql>    RETURN S;     
  11. mysql>     ELSE     
  12. mysql>    RETURN CONCAT(LEFT(S, N-10), '...', RIGHT(S, 5));     
  13. mysql>     END IF;     
  14. mysql> END IF;     
  15. mysql> END;   

  預設情況下,不可能等到使用者把這些語句全部輸入完之後,再執行整段語句。

  因為mysql一遇到分號,它就要自動執行。

  即,在語句RETURN '';時,mysql解譯器就要執行了。

  這種情況下,就需要事先把delimiter換成其它符號,如//或$$。

 
  1. mysql> delimiter //     
  2. mysql> CREATE FUNCTION `SHORTEN`(S VARCHAR(255), N INT)     
  3. mysql>     RETURNS varchar(255)     
  4. mysql> BEGIN     
  5. mysql> IF ISNULL(S) THEN     
  6. mysql>     RETURN '';     
  7. mysql> ELSEIF N<15 THEN     
  8. mysql>     RETURN LEFT(S, N);     
  9. mysql> ELSE     
  10. mysql>     IF CHAR_LENGTH(S) <=N THEN     
  11. mysql>    RETURN S;     
  12. mysql>     ELSE     
  13. mysql>    RETURN CONCAT(LEFT(S, N-10), '...', RIGHT(S, 5));     
  14. mysql>     END IF;     
  15. mysql> END IF;     
  16. mysql> END;//   

  這樣只有當//出現之後,mysql解譯器才會執行這段語句

  以上就是MySql中delimiter起到的作用介紹。




相關文章

Alibaba Cloud 10 Year Anniversary

With You, We are Shaping a Digital World, 2009-2019

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。