ansi-diff-comments.md 1.4 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
#### 1.7.2.4 '--' 作为评论的开始

[](<>)[](<>)

标准 SQL 使用 C 语法`/* 这是一条评论 */`用于注释,MySQL Server 也支持这种语法。MySQL 还支持此语法的扩展,使 MySQL 特定的 SQL 能够嵌入到注释中,如中所述[第 9.7 节,“评论”](comments.html).

标准 SQL 使用“`--`”作为开始评论序列。MySQL 服务器使用`#`作为开始评论字符。MySQL 服务器还支持`--`评论风格。那就是`--`start-comment 序列必须后跟一个空格(或一个控制字符,例如换行符)。需要该空间以防止自动生成的 SQL 查询出现问题,这些查询使用如下结构,我们在其中自动插入付款的值`支付`

```
UPDATE account SET credit=credit-payment
```

考虑一下如果发生什么`支付`具有负值,例如`-1`

```
UPDATE account SET credit=credit--1
```

`信用--1`是 SQL 中的有效表达式,但`--`被解释为注释的开始,部分表达式被丢弃。结果是一个与预期含义完全不同的语句:

```
UPDATE account SET credit=credit
```

该语句根本不会产生任何价值变化。这说明允许评论以`--`可能会产生严重的后果。

使用我们的实现需要一个空格`--`以便在 MySQL Server 中将其识别为 start-comment 序列。所以,`信用--1`使用安全。

另一个安全的功能是[**mysql**](mysql.html)命令行客户端忽略以`--`.