昨天出了一个bug,下面sql执行完之后is_active(boolean类型),本来是false,想通过下面sql更新为true,auto_release(boolean类型)有时候可能为true,有时候为false,再执行完sql之后,is_active字段完全不按照自己的想法来,真实离奇了

#第一条
UPDATE cost SET is_active = 1 , auto_release = 1 WHERE id = #{id}
#第二条
UPDATE cost SET is_active = 1 AND auto_release = 1 WHERE id = #{id}

众所周知第一条是正确的,但是第二条我们也可以认为是正确的,因为第二句mysql作为整体条件判断了

UPDATE cost SET is_active = ( 1 AND auto_release = 1) WHERE id = #{id}

所以知道了吧,真是手欠呀!