我打算使用PHP执行SQL case语句,在MySQL表中一次编辑多行。如果查询失败,某些值是否可能已更改而其他值尚未更改?
此示例显示了涉及的案例陈述类型:
UPDATE person
SET name = CASE id
WHEN 1 THEN 'Jim'
WHEN 2 THEN 'Mike'
WHEN 3 THEN 'Precious'
END,
sex = CASE id
WHEN 1 THEN 'female'
WHEN 2 THEN 'male'
WHEN 3 THEN 'male'
END
WHERE id IN (1,2,3)
答案 0 :(得分:2)
交易是您正在寻找的词。交易是全有或全无的操作。这意味着要么一切都通过并且事务已经完成,或者某些事情失败并且整个事务被回滚。这样可以防止数据不一致。
如上所述,您的表引擎需要支持事务。 InnoDB在MySQL中执行此操作,而MyISAM则不执行此操作。