Mysql
 sql >> база данни >  >> RDS >> Mysql

Отмяна на транзакцията на Mysql при неуспех в актуализацията

Ето в PHP (не съм тестван, трябва да се адаптира към вашата ситуация):

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

Или, ако искате да бъдете умни и го направете в SQL (използвайки ROW_COUNT() и 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как се заключват innodb таблиците, когато тригерът ON INSERT се обработва?

  2. MySQL - GROUP BY с ORDER DESC не работи

  3. Променете паролата за mysql в контейнера на Docker

  4. Записване на HABTM с допълнителни полета?

  5. Нарушение на ограничението за целостта:1048 Колона „tagable_id“ не може да бъде нула