mysq触发器之DELIMITER 命令
在之前讲到的创建触发器语法一文中,触发器程序体(trigger_stmt)中,程序可以是一句SQL语句,也可以是用 BEGIN 和 END 包含的多条语句。
其格式为:
BEGIN
[statement_list]
END
其中,statement_list 代表一个或多个语句的列表,列表内的每条语句都必须用分号(;)来结尾。
而在MySQL中,分号是语句结束的标识符,遇到分号表示该段语句已经结束,MySQL可以开始执行了。因此,解释器遇到statement_list 中的分号后就开始执行,这时候就会报出错误,因为没有找到和 BEGIN 匹配的 END。
这时就会用到 DELIMITER 命令(DELIMITER 是定界符,分隔符的意思),它是一条命令,不需要语句结束标识,语法为:
DELIMITER new_delemiter其中new_delemiter 可以设为1个或多个长度的符号,默认的是分号(;),我们可以把它修改为其他符号,如 |
语法为: DELIMITER |
在这之后的语句,以分号结束,解释器不会有什么反应,只有遇到了 |,才认为是语句结束。注意,使用完之后,我们还应该记得把它给修改回来。
语法为: DELIMITER ;