Wenn du Transaktionen benötigst: Stell um! Nicht lang schnacken, fertig werden
Mehrere DELETE-Statements in einem Query-String
Einklappen
X
-
Machen die Transaktionen nicht eigentlich nicht viel mehr, als der Reihe nach mehrere Queries auszuführen, und dabei die betroffenen Tabellen zu locken ?
Sowas könnte man sih doch auch selber schreiben. Oder ich hab den Sinn von Transaktionen noch nich verstanden. :>
Kommentar
-
Original geschrieben von nohfreak
Machen die Transaktionen nicht eigentlich nicht viel mehr, als der Reihe nach mehrere Queries auszuführen, und dabei die betroffenen Tabellen zu locken ?
Oder wenn du innerhalb einer Transaktion 99 Records löscht, der 100. aber fehlschlägt, kannst du die 99 Löschungen mit einem Schlag rückgängig machen.
Wenn alles ok ist, machst du die Änderungen mit COMMIT [WORK] definitiv.
Oder das Beispiel von neophyt:
Da wird ein Mitarbeiter aus einer MA-Tabelle, die zu diesem MA gehörenden Einträge in einer Code-Tabelle und die von diesen Codes abhängigen Inhalte gelöscht (in umgekehrter Reihenfolge). Es macht Sinn, entweder alle diese Aktionen, oder keine durchzuführenZuletzt geändert von H2O; 27.02.2008, 13:25.Gruss
H2O
Kommentar
-
Hrm. Okay, verdammt. Der Rollback funktioniert tatsächlich nich mit MyISAM.
Ich habs mal wie folgt getestet:
PHP-Code:<?php
try {
$dbh -> beginTransaction();
$dbh -> exec("INSERT INTO accounts(name) VALUES('Klaus')");
$dbh -> exec("INSERT INTO accounts(name) VALUES('Klaus2')");
$dbh -> exec("INSERT INTO accounts(name) VALUES('Klaus3')");
$dbh -> commit();
} catch(Exception $e) {
$dbh->rollback();
echo "Failed:" . $e -> getMessage();
}
?>
Schade. :>
Kommentar
-
Jaja, ich weiß, ich weiß. Ich wollts trotzdem mal probieren wie weit das funktioniert. Also obs garnich geht ode rnur er Rollback nich tut.
Was für Vor- Nachteile bringt denn eine Umstellung auf z.B. InnoDB ?
Kommentar
Kommentar