Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Reversão de transação do MySQL em falha na atualização


Aqui está em PHP (não testei, precisa adaptar a sua situação):
mysql_query('START TRANSACTION;')
mysql_query("UPDATE posts SET status='approved' where post_id='id' AND status != 'approved';");
if (mysql_affected_rows()){
    mysql_query('COMMIT');
} else {
    mysql_query('ROLLBACK');
}

Ou, se você quiser ser inteligente e fazê-lo em SQL (usando ROW_COUNT() e IF ):
START TRANSACTION;
UPDATE posts SET status='approved' where post_id='id' AND status != 'approved';
SELECT ROW_COUNT() INTO @affected_rows;
-- .. other queries ...
IF (affected_rows > 0) THEN
    COMMIT;
ELSE
    ROLLBACK;
END IF