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

Ако PHP PDO транзакция се провали, трябва ли изрично да се върна()?

Ако не commit не rollback отворена транзакция и не е commited навсякъде по-късно във вашия скрипт, той няма да бъде commited (както се вижда от двигателя на базата данни) , и автоматично ще се върне обратно в края на вашия скрипт.


Все пак аз (е, почти) винаги commit или rollback изрично транзакциите, които отварям, така че :

  • Няма риск от грешка (като извършване „по грешка“ по-късно в скрипта)
  • Кодът е по-лесен за четене/разбиране :когато се види $db->rollback() , той знае, че искам транзакцията да бъде върната със сигурност и не е нужно да мисли „той наистина ли е искал да се върне назад, или е забравил нещо? и какво ще кажете по-късно в скрипта? "


Двигателят на DB не "вижда" PDOException:той се хвърля от PHP при различни условия - но базата данни не връща нищо от само себе си:

  • или транзакцията е ангажирана
  • или е върнат назад
  • или не е изрично ангажирано, нито е върнато назад – което означава, че не е ангажирано – което означава, че това, което е променено, не е „наистина“ променено



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. WHERE дата и време по-старо от известно време (напр. 15 минути)

  2. Предаване на масив през AJAX от php към javascript

  3. Коригирайте „ГРЕШКА 1136 (21S01):Броят на колоните не съвпада с броя на стойностите на ред 2“, когато използвате инструкцията VALUES в MySQL

  4. Активиране на общ дневник на заявките на MySQL с JDBC

  5. SQL заявка в няколко реда