4.13. Transaktionen
(Transactions)
Als Transaction wird in der Datenbankwelt eine Menge von
SQL-Anweisungen benannt, die unbedingt in einem Stück und ohne Unterbrechung
abgearbeitet werden müssen. Sollte innerhalb einer Transaction ein Fehler
geschehen, so wird die Datenbank wieder auf den Stand vor Beginn der
Transaktion gesetzt.
Es gibt immer mal wieder Anwendungsgebiete, bei denen man eine
Datenbank-Transaktion durchführen muss. Das klassische Beispiel dafür ist
eine Geldbewegung von einem zu einem anderen Konto. Die macht nur Sinn, wenn
beide Aktionen (von einem Konto abbuchen und auf das Konto des Empfängers
buchen) ausgeführt werden.
Eine Transaktion wird nach folgendem Muster
durchgeführt:
ActiveRecord::Base.transaction do
Book.create(:title => 'A')
Book.create(:title => 'B')
Book.create(:title => 'C').authors.create(:last_name => 'Z')
end
Transaktionen sind ein komplexes Thema. Wenn Sie mehr Informationen
dazu suchen, können Sie die ri-Hilfe dafür mit
ri
ActiveRecord::Transactions::ClassMethods auf der Shell
abrufen.
Wichtig
Die Methoden save
und
destroy
werden automatisch im
Transaktions-Wrapper
ausgeführt. So stellt Rails sicher, dass bei diesen Methoden kein
undefinierter Zustand entsteht.
Warnung
Transaktionen werden nicht von jeder Datenbank nativ unterstützt.
In einem solchen Fall funktioniert der Code weiterhin, nur hat man nicht
die Sicherheit der Transaktion.