sql >> Databasteknik >  >> RDS >> Mysql

Mysql-transaktionsåterställning vid fel i uppdateringen

Här är i PHP (har inte testat, behöver anpassas till din situation):

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

Eller, om du vill vara smart och göra det i SQL (med ROW_COUNT() och 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. ORA-00904:ogiltig identifierare

  2. Länka django- och mysql-behållare med docker-compose

  3. JDBC testar alltid den sista raden i MySQL-tabellen?

  4. En praktisk användning av SQL COALESCE-funktionen