2009-08-28 63 views

回答

50

它将语句分隔符从;更改为//。这样你就可以在你的触发器定义中写入;而不会导致MySQL客户端误解了你的意思。

请注意,改变回来时,它是DELIMITER ;,而不是DELIMITER;,正如我见过人们试图做的那样。

+0

是mysql语法还是mysql shell命令? – nafg 2015-02-04 09:42:09

+0

mysql shell命令 – 2015-04-12 05:41:35

13

在SQL中,用分隔符(默认分号(;))关闭每条语句。在触发器中,您需要编写多个语句,每个语句以分号结尾。为了告诉MySQL这些分号不是触发器语句的结尾,你暂时将分隔符从;到//,所以MySQL会知道触发器语句只有在econunter //时才会结束。

1

阅读(ummmm)mysql documentation

delimiter是您发送给mysql命令行客户端的每个命令结束的标记。

delimiter不仅与触发器有关,而且定义触发器和存储过程是一个强大的用例,因为您希望它们包含分号(;),否则这些分号是默认的delimiter

1

简单设置语句分隔符的结尾(;标准默认SQL中的分号)。 如果您想在SQL中使用;,或者您正在使用嵌入式SQL(可能导致混淆),更改字符可能会很有用。同样,在你的例子中//可能会导致嵌入式SQL产生混淆,或者你可能想在你的SQL中使用它。所以暗示使用DELIMITER来设置适合您的应用程序和需要的分隔符。

0

添加例子:
当使用mysql shell命令时,我们使用;分隔符关闭每个语句。但是,如果我们想要构建存储过程和触发器,则还需要在这些语句中添加分号;

> delimiter // 
> create trigger log_students after insert on students 
> for each row 
> begin 
> insert into log_students(change_by, change_at) values(USER(), NOW()); 
> end// 
> delimiter ; 
相关问题