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

Транзакциите на бази данни в Zend Framework:Изолирани ли са?

Предполагайки, че използвате движката InnoDB за таблици, на които ще издавате транзакции:

Ако изискването е първо да прочетете реда и да го заключите изключително, преди да го актуализирате, трябва да издадете SELECT ... FOR UPDATE запитване. Нещо като:

$db->beginTransaction();
try
{
    $select = $db->select()
                 ->forUpdate() // <-- here's the magic
                 ->from(
                     array( 'a' => 'yourTable' ),
                     array( 'your', 'column', 'names' )
                 )
                 ->where( 'someColumn = ?', $whatever );

    $result = $this->_adapter->fetchRow( $select );

    /*
      alter data in $result
      and update if necessary:
    */
    $db->update( 'yourTable', $result, array( 'someColumn = ?' => $whatever ) );

    $db->commit();
}
catch( Exception $e )
{
    $db->rollBack();
}

Или просто пуснете 'raw' SELECT ... FOR UPDATE и UPDATE SQL изрази на $db разбира се.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изтриване на дублиращи се редове в MySQL (игнорира първичен ключ)

  2. Достъпът е отказан за потребител root - mysql на MAC OS

  3. Използване на наклонени черти след mysql_real_escape_string

  4. Изпращане на данни от javascript към mysql база данни

  5. Разлики между MySQL и SQLite в SQL