Linktipp: Datenbankanweisungen in Drupal CMS mit Transaktionen und Exceptions absichern

Datenbankanweisungen in Drupal CMS mit Transaktionen und Exceptions

Transaktionen und Exceptions sind großartige Helfer, wenn konsistente Datenbankzustände in Drupal benötigt werden, man aber nicht sicher sein kann, ob eine Funktion sauber durchläuft.

Das folgende Beispiel zeigt, wie man eine solche Transaktion in Drupal startet. Wir nutzen die Transaktion auf der Haupt-Datenbankverbindung des Aufrufs, damit alle "herkömmlichen" Aufrufe in der Businesslogik in der Transaktion laufen. Alternativ könnte man für eigene Befehle eine eigene DB-Verbindung mit Transaktion starten. Darum geht es hier aber nicht.

  1.   // Start a transaction for the main db connection.
  2.   $transaction = db_transaction();
  3.  
  4.   try {
  5.     // My logic
  6.     // If something fails, just
  7.     //throw new Exception('Something went wrong');
  8.  
  9.     // Everything worked fine. NORMALLY we would commit this manually here, like $transaction->commit();
  10.     // BUT! Drupal does not want that! If everything is fine, just proceed without any explicit commit call.
  11.   } catch (Exception $e) {
  12.     // Oh no, there was an exception. Roll the DB statements back!
  13.     $transaction->rollback();
  14.     // Re-throw the exception!
  15.     throw $e;
  16.   }

Weitere Informationen zu Transaktionen findet ihr hier: https://drupal.org/node/355875

Kommentare

Kommentar hinzufügen

Der Inhalt dieses Feldes wird nicht öffentlich zugänglich angezeigt. Wenn Sie ein zulässiges Avatar mit Ihrer E-Mail-Adresse verknüpft haben, wird dieses als Avatar verwendet.

Weitere Informationen über Formatierungsoptionen