【发布时间】:2010-11-23 17:10:57
【问题描述】:
DELIMITER //
它有什么用?
【问题讨论】:
DELIMITER //
它有什么用?
【问题讨论】:
它将语句分隔符从; 更改为//。这样你就可以在你的触发器定义中写上;,而不会被 MySQL 客户端误解为你已经完成了它。
请注意,改回来时,它是 DELIMITER ;,而不是 DELIMITER;,因为我看到人们尝试这样做。
【讨论】:
在 SQL 中,您使用分隔符来关闭每个语句,默认情况下分隔符是分号 (;)。在触发器中,您需要编写多个语句,每个语句都以分号结尾。为了告诉 MySQL 这些分号不是触发器语句的结尾,您暂时将分隔符从 ; 更改为到 //,因此 MySQL 将知道触发器语句仅在遇到 // 时才结束。
【讨论】:
添加示例:
在使用 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 ;
【讨论】:
Simple 设置语句结束分隔符(; 标准分号,默认 SQL)。
如果您想在 SQL 中使用 ;,或者您正在使用嵌入式 SQL(这可能会导致混淆),更改字符可能很有用。同样,您示例中的 // 可能会导致嵌入式 SQL 混淆,或者您可能希望在 SQL 中使用它。所以暗示使用DELIMITER 来设置适合您的应用程序和需求的分隔符。
【讨论】:
阅读(嗯)mysql documentation。
delimiter 是您发送到 mysql 命令行客户端的每个命令的结束标记。
delimiter 不仅与触发器有关,而且定义触发器和存储过程是一个强大的用例,因为您希望它们包含分号 (;),否则默认为 delimiter。
【讨论】: