MySQL 触发器中的 DELIMITER // 是什么作用?
MySQL 中,可以使用触发器实现对数据表的自动化操作。在创建 MySQL 触发器时,需要使用 DELIMITER // 来指定语句结束符,那么这个 DELIMITER // 到底是起什么作用呢?
阅读更多:MySQL 教程
DELIMITER 的作用
在 MySQL 中,默认的语句结束符是分号(;),而触发器又是由多条 SQL 语句组成的,如果不改变默认的语句结束符,就会造成错误。因此,需要使用 DELIMITER // 告诉 MySQL,对于这个触发器,语句结束符从分号(;)变为两个斜杠(//),那么在一个触发器中会看到类似这样的语法:
在上面的语法中,DELIMITER // 将分号(;)作为普通的字符处理,触发器的定义和实际 SQL 语句都是使用两个斜杠(//)来结束的。
完整示例
实际上,一个不带 DELIMITER // 的 MySQL 触发器会报错,为了避免这种错误,我们可以看一个完整的 MySQL 触发器的示例代码:
在上面的示例中,我们首先使用 DELIMITER // 修改语句结束符。接着,我们定义一个触发器,在向 table_name 表中插入一行数据时,触发器会将新插入的数据的 column_name 值插入到 log_table 表中作为一次变化的记录。
最后,我们使用普通的 SQL 语句向 table_name 表中插入一行数据。执行成功后,我们可以查询 log_table 表,确认触发器是否正常运行。
总结
在 MySQL 触发器中,使用 DELIMITER // 可以改变 SQL 语句的默认结束符,使得多行 SQL 语句可以作为整体在一个触发器中进行处理。在编写 SQL 语句时,需要在语句结束时使用 // 作为结束符,而非分号。