根据MySQL 5.5 documentation,UPDATE的有效语法如下:
UPDATE [LOW_PRIORITY] [IGNORE] table_references
SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
[WHERE where_condition]
在我们的代码中,我们找到了此请求:
UPDATE eMail SET Actif = 0 AND FKClient = 122;
表格是MySQL 5.5上的Innodb,Actif
是tinyint(1)可以为空。
据我所知,此语法无效且不应执行,因为AND
语句中不允许进行SET
比较。
如果您执行代码,则所有eMail
行都将设置为Actif = 0
。
为什么我的UPDATE
请求有效?
答案 0 :(得分:4)
当然可以。它被解析为:
UPDATE eMAIL SET Active = (0 AND FKCLient = 122)
FKClient= 122
将是一个布尔比较,返回true / false,因此它变为
UPDATE eMAIL SET Active = (0 AND bool)
0 AND anything
是0
,所以......
... SET Active = 0