sql >> Database >  >> RDS >> Mysql

Mysql-transactie terugdraaien bij fout in update

Hier is in PHP (niet getest, moet worden aangepast aan uw situatie):

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');
}

Of, als je slim wilt zijn en het in SQL wilt doen (met behulp van ROW_COUNT() en 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


  1. Afkappen met voorwaarde

  2. Hoe de vergelijking van twee kolommen als één kolom in Oracle te selecteren?

  3. Hoe voeg je een PHP-constante in een SQL-query in?

  4. Hoe een exec-resultaat toe te wijzen aan een sql-variabele?