Home > Database > Mysql Tutorial > 细细研究MySql中delimiter起到的作用_MySQL

细细研究MySql中delimiter起到的作用_MySQL

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-06-01 14:01:55
Original
1231 people have browsed it

  MySql中delimiter究竟可以起到些什么作用呢?可能不少人都有这样的疑惑,下文就为您介绍MySql中delimiter的作用,供您参考。

  MYSQL导出一个SQL后:

 

<ol class="dp-sql">
<li class="alt">DELIMITER $$     </li>
<li>DROP TRIGGER IF EXISTS `updateegopriceondelete`$$     </li>
<li class="alt">CREATE     </li>
<li>    TRIGGER `updateegopriceondelete` AFTER  DELETE ON  `customerinfo`     </li>
<li class="alt">    FOR EACH ROW BEGIN     </li>
<li>DELETE FROM egoprice  WHERE customerId=OLD.customerId;     </li>
<li class="alt">    END$$     </li>
<li>DELIMITER ;  </li>
</ol>
Copy after login

  其中DELIMITER 定好结束符为"$$", 然后最后又定义为";", MYSQL的默认结束符为";".

  详细解释:

  其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。

  默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,

  那么回车后,mysql将会执行该命令。如输入下面的语句

  mysql> select * from test_table;

  然后回车,那么MySQL将立即执行该语句。

  但有时候,不希望MySQL这么做。在为可能输入较多的语句,且语句中包含有分号。

  如试图在命令行客户端中输入如下语句

 

<ol class="dp-sql">
<li class="alt">mysql> CREATE FUNCTION `SHORTEN`(S VARCHAR(255), N INT)     </li>
<li>mysql>     RETURNS varchar(255)     </li>
<li class="alt">mysql> BEGIN     </li>
<li>mysql> IF ISNULL(S) THEN     </li>
<li class="alt">mysql>     RETURN '';     </li>
<li>mysql> ELSEIF N</li>
<li class="alt">mysql>     RETURN LEFT(S, N);     </li>
<li>mysql> ELSE     </li>
<li class="alt">mysql>     IF CHAR_LENGTH(S) </li>
<li>mysql>    RETURN S;     </li>
<li class="alt">mysql>     ELSE     </li>
<li>mysql>    RETURN CONCAT(LEFT(S, N-10), '...', RIGHT(S, 5));     </li>
<li class="alt">mysql>     END IF;     </li>
<li>mysql> END IF;     </li>
<li class="alt">mysql> END;   </li>
</ol>
Copy after login

  默认情况下,不可能等到用户把这些语句全部输入完之后,再执行整段语句。

  因为mysql一遇到分号,它就要自动执行。

  即,在语句RETURN '';时,mysql解释器就要执行了。

  这种情况下,就需要事先把delimiter换成其它符号,如//或$$。

 

<ol class="dp-sql">
<li class="alt">mysql> delimiter //     </li>
<li>mysql> CREATE FUNCTION `SHORTEN`(S VARCHAR(255), N INT)     </li>
<li class="alt">mysql>     RETURNS varchar(255)     </li>
<li>mysql> BEGIN     </li>
<li class="alt">mysql> IF ISNULL(S) THEN     </li>
<li>mysql>     RETURN '';     </li>
<li class="alt">mysql> ELSEIF N</li>
<li>mysql>     RETURN LEFT(S, N);     </li>
<li class="alt">mysql> ELSE     </li>
<li>mysql>     IF CHAR_LENGTH(S) </li>
<li class="alt">mysql>    RETURN S;     </li>
<li>mysql>     ELSE     </li>
<li class="alt">mysql>    RETURN CONCAT(LEFT(S, N-10), '...', RIGHT(S, 5));     </li>
<li>mysql>     END IF;     </li>
<li class="alt">mysql> END IF;     </li>
<li>mysql> END;//   </li>
</ol>
Copy after login

  这样只有当//出现之后,mysql解释器才会执行这段语句

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

Related labels:
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template