Thread Update auf db mit perl (19 answers)
Opened by Duff at 2008-01-15 16:34

renee
 2008-01-16 10:31
#104773 #104773
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wenn in dem Statement schon ein Fehler ist, wird erst gar nichts in die DB geschrieben, so dass Du auch kein Rollback brauchst.

Ein Rollback (und damit AutoCommit => 0) macht dann Sinn, wenn Du Transaktionen verwenden willst. D.h. wenn Du eine ganze Reihe von Aktionen hast und wenn eine einzige davon schiefläuft, willst Du alles wieder rückgängig machen.

Keinen Sinn macht es bei einem einzigen Statement...

Und vor allem muss es die DB unterstützen...

Hier macht es Sinn:
Code: (dl )
1
2
3
1) Trage was in Tabelle A ein
2) Aktualisiere etwas in Tabelle B in Abhängigkeit zu dem Eintrag in Tabelle A
3) Wenn 2) schiefgelaufen ist, muss 1) rückgängig gemacht werden, damit keine Inkonsistenzen entstehen


Hier macht es keinen Sinn, da das Statement erst gar nicht ausgeführt wird:
Code: (dl )
1) Führe ein fehlerhaftes Statement aus (oder versuche es)


Oder mit etwas Perl-Code
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
# AutoCommit => 0
my $rows_a = $dbh->do( $stmt_1, undef, @binds_1 );
my $rows_b = $dbh->do( $stmt_2, undef, @binds_2 );
unless( defined $rows_a and defined $rows_b ){ # wenn eins von beidem fehlgeschlagen ist
    $dbh->rollback;
}
else{
    $dbh->commit;
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/

View full thread Update auf db mit perl