失败的SQL case语句是否可以更改某些行但不会更改其他行?

时间:2012-12-17 15:10:36

标签: php sql

我打算使用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)

1 个答案:

答案 0 :(得分:2)

交易是您正在寻找的词。交易是全有或全无的操作。这意味着要么一切都通过并且事务已经完成,或者某些事情失败并且整个事务被回滚。这样可以防止数据不一致。

如上所述,您的表引擎需要支持事务。 InnoDB在MySQL中执行此操作,而MyISAM则不执行此操作。