首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在相关规范中,是否记录了SQL脚本中的某些注释实际上将作为有效的SQL执行(由MySQL执行)?

问在相关规范中,是否记录了SQL脚本中的某些注释实际上将作为有效的SQL执行(由MySQL执行)?
EN

Stack Overflow用户
提问于 2014-09-02 02:12:19
回答 1查看 538关注 0票数 2

在浏览程序SQLYog为MySQL 5.6.16数据库生成的SQLYog时,我注意到每个存储过程CREATE语句都被注释字符(/* */)包围。但是,存储过程是在执行SQL脚本时创建的。

我惊讶地看到围绕存储过程CREATE语句的注释,然后看到这些注释语句实际上被执行。

考虑到确实发生了这种情况,我假设实际上无论是SQL标准、MySQL本身,还是SQLYog,都是它支持执行至少一些注释性SQL代码的文档。

这导致我搜索规范文档,列出了在运行SQL脚本时执行一些注释代码块的详细信息。然而,整整一个小时的搜索(特别是查找官方规范,但第二次搜索SQL、MySQL或SQLYog的任何此类文档)实际上只显示了一个链接,该链接甚至引用了一个事实,即实际上执行了SQL脚本中的注释代码行。这是:link to reference that commented lines of SQL are executed (包括一些答案)。

我知道在这里我可能忽略了显而易见的内容,但是我还没有找到这方面的规范。

请有人确认,如果是,请提供引用,这些正式文档声明(并描述)将执行的SQL,即使'/* */‘语法围绕着语句/s(这是SQL、MySQL还是SQLYog)?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-03 12:12:07

它在手册中,在“注释语法”下。

http://dev.mysql.com/doc/refman/5.6/en/comments.html

代码语言:javascript
复制
/*! MySQL-specific code */ 

在本例中,MySQL服务器与其他任何SQL语句一样,在注释中解析和执行代码,但其他Server将忽略扩展。

..。

如果在“!”字符后面添加版本号,则只有当MySQL版本大于或等于指定版本号时,注释中的语法才会执行。

在存储过程的情况下,整个声明被包装起来,因此如果您试图在MySQL服务器的一个版本上恢复转储文件(该版本太老了,根本不支持存储过程),则服务器将忽略过程定义,而不是导致整个恢复操作失败。

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

https://stackoverflow.com/questions/25614919

复制
相关文章

相似问题

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