DELIMITER //
这有什么用途?
;
更改为//
。这是为了能够在触发器定义中写入;
而不被MySQL客户端误解为表示已结束。DELIMITER ;
,而不是我看到有人试图使用的DELIMITER;
。添加一个例子:
当使用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 ;
简单设置语句结束分隔符(标准的默认 SQL 中为 ;
分号)。
如果您想在 SQL 中使用 ;
,或者您正在使用嵌入式 SQL(可能会导致混淆),更改字符可能会很有用。同样,在您的示例中使用 //
可能会导致嵌入式 SQL 混淆,或者您可能想在 SQL 中使用它。因此,只需使用 DELIMITER
设置适合您的应用程序和需求的分隔符即可。
;
更改为//
。*我的回答详细解释了分隔符。DELIMITER //
//
运行下面的SQL语句,但不能使用;
。mysql> SELECT * FROM person//
+----+-------+
| id | name |
+----+-------+
| 1 | John |
| 2 | David |
+----+-------+
//
改回;
:DELIMITER ;
;
运行下面的SQL语句,但不能使用//
。mysql> SELECT * FROM person;
+----+-------+
| id | name |
+----+-------+
| 1 | John |
| 2 | David |
+----+-------+
阅读(嗯嗯)mysql文档。
delimiter
是你发送给 mysql 命令行客户端的每个命令的结束标记符。
delimiter
不仅与触发器相关,而且定义触发器和存储过程是一个强大的用例,因为你希望它们包含分号 (;),而分号是默认的 delimiter
。