最近,我发现一年前修改过的一个查询悄悄地失败了(什么也没做)。
我把问题归咎于语法错误。而不是用逗号来设置多个字段,我错放了。因此,它没有按预期设置第二个字段,而是完全没有设置字段。
我最初的问题是这样的:
UPDATE `report` SET `confirm` = 2 WHERE `id` = 999
这样修改显然是非常有效的语法:
UPDATE `report` SET `confirm` = 2 AND `time_confirm` = UNIX_TIMESTAMP() WHERE `id` = 999
我知道我应该使用逗号(即使在那时也应该),我应该测试像这样的一个小的简单更改(超出了标准错误处理),现在我已经为这个错误付出了高昂的代价。然而,我仍然很好奇为什么这个查询是有效的,以及它实际上在做什么。
根据mysql文档,它期望在该位置有一个逗号分隔的分配列表。
我输入的查询实际上是做什么的?为什么在mysql语法中允许它而不抛出任何类型的错误?
1条答案
按热度按时间rdrgkggo1#
并且也是一个逻辑运算符(mysql ref),因此您可以使用以下语法:
分配(2和
time_confirm
=unix\u timestamp())进行确认