0

PHP を使用して SQL case ステートメントを実行し、MySQL テーブルで一度に多くの行を編集することを計画しています。クエリが失敗した場合、一部の値が変更され、他の値は変更されていない可能性はありますか?

この例は、関連する case ステートメントの種類を示しています。

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)
4

1 に答える 1

2

トランザクションは、あなたが探している言葉です。トランザクションは、全か無かの操作です。これは、すべてがパスしてトランザクションが完了するか、何かが失敗してトランザクション全体がロールバックされることを意味します。このようにして、データの不整合を防ぎます。

前述のように、テーブル エンジンはトランザクションをサポートする必要があります。InnoDB は MySQL でこれを行いますが、MyISAM は行いません。

于 2012-12-17T15:17:06.113 に答える