最近,我发现我大约一年前修改过的一个查询正在悄悄地失败(根本什么也不做)。
我把这个问题归咎于一个语法错误。而不是用逗号来设置多个字段,我会错误地输入和。因此,它没有按预期设置第二个字段,而是根本没有设置字段。
UPDATE `report` SET `confirm` = 2 WHERE `id` = 999
像这样修改它显然是完全有效的语法:
UPDATE `report` SET `confirm` = 2 AND `time_confirm` = UNIX_TIMESTAMP() WHERE `id` = 999
我知道我应该使用逗号(甚至在那时也这样做了),我甚至应该测试像这样的一个小的更改(超出标准的错误处理),现在我为这个错误付出了巨大的代价。但是,我仍然很想知道为什么查询是有效的,以及它实际上在做什么。
根据 MySQL documentation ,它希望在该位置有一个逗号分隔的分配列表。
我输入的查询实际上是做什么的?为什么在MySQL语法中允许它而不引发任何错误?
也是一个逻辑运算符( Mysql Ref ),所以你的语法应该是:
分配(2和 time_confirm
time_confirm