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

Rails транзакции

Ако имате комбинация от код, който се нуждае от изрични транзакции и код, който може да разчита на autocommit, може би не трябва да деактивирате автоматичното завършване за всички връзки. Вие сте на прав път и се чудите дали това ще повлияе на друг код. Ако деактивирате autocommit, но другият код не знае, че трябва да се ангажира, за да бъде ангажирана работата му, тогава това ще бъде проблем. Неангажираната работа се отменя, когато връзката се затвори.

Трябва да сте наясно, че механизмът за съхранение по подразбиране за MySQL е MyISAM , който изобщо не поддържа транзакции. Когато правите промени в таблица, която използва MyISAM, промените ефективно се поемат незабавно, независимо от вашите изрични заявки за започване и завършване на транзакции и независимо от състоянието на автоматично завършване. Така че няма да можете да се върнете назад, без значение какво, освен ако не сте създали своите таблици с помощта на InnoDB машина за съхранение (или други безопасни за транзакции механизми за съхранение, като BDB ).

Това е ненужно за да деактивирате режима на автоматично записване за използване на транзакции в MySQL. Просто започнете транзакция изрично. Следните SQL оператори ще бъдат част от транзакция, докато не извършите или отмените тази транзакция, независимо от стойността на autocommit в текущата ви връзка.

http://dev.mysql.com/doc/refman/5.0 /bg/commit.html казва:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Намиране на градове в рамките на „X“ километри (или мили)

  2. MySQL CAST срещу CONVERT

  3. Как да изберете до достигане на сума

  4. Как да изпълним две mysql заявки като една в PHP/MYSQL?

  5. Поле за актуализиране на MySQL въз основа на минимална стойност на друго поле, когато е групирано от трето