首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL分隔符什么时候有用?

问MYSQL分隔符什么时候有用?
EN

Stack Overflow用户
提问于 2018-07-19 16:11:21
回答 1查看 161关注 0票数 2

我正在编写SQL,以便为数据库中的表创建触发器。当我们生成一个新的数据库时,这段代码应该在脚本中运行。

为了理解如何做到这一点,我一直在阅读SQL,并最终想出了这样一个查询:

代码语言:javascript
复制
DELIMITER $$
CREATE TRIGGER calendar_event_after_insert AFTER INSERT 
ON calendar_event
FOR EACH ROW
BEGIN
  IF @log_calendar_event_id = 'YES'
  THEN
    ...
  END IF;
  IF @log_calendar_event_name = 'YES'
  THEN
    ...
  END IF;
  ...
END
$$
DELIMITER ;

现在,我在使用划界器时遇到了一个错误,我承认我不太明白它是如何工作的。我的基本理解是,由于这个大查询中有多个查询都以;结尾,所以当查询使用另一个分隔符结束时,我需要告诉sql。

在阅读了一些关于分隔符的内容之后,对我来说,这似乎是正确的语法,最重要的是,我在续集pro中运行了这个查询,它有时工作,有时不工作(奇怪,我知道)。

因此,我最终决定移除分隔符部分,一切都很顺利。我有点担心这会有副作用。

所以我的问题是:什么时候使用分隔符?对我的情况有用吗?如果是这样的话,我在这里做错了什么?

应注释中的要求进行编辑

这是在运行查询时遇到的错误:

您的SQL语法出现了错误;请检查与您的MySQL服务器版本对应的手册,以获得在第1行插入日历后使用“划界器$$创建触发器calendar_event_after_insert”附近的正确语法。

我们在开发机器上安装了一个旧版本的MYSQL -MySQL5.1.73

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-19 17:41:29

DELIMITER不是SQL语言的一部分。它是命令 of 官方命令行工具

如果使用mysql客户端程序定义包含分号字符的存储程序,则会出现问题。默认情况下,mysql本身将分号识别为语句分隔符,因此必须临时重新定义分隔符,以使mysql将整个存储的程序定义传递给服务器。 若要重新定义mysql分隔符,请使用分隔符命令。

还有一些第三方程序也实现了delimiter命令,以便能够运行复杂的MySQL脚本(例如HeidiSQL)。

如果您在不允许多个语句(例如典型PHP应用程序)的上下文中运行脚本,则命令既不存在也不需要。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51427413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档