Leser: 1
|< 1 2 >| | 20 Einträge, 2 Seiten |
1 2 3 4 5 6
my $stmt = "UPDATE tabellenname SET spalte1 = ?, spalte2 = ? WHERE spalte3 = ?"; my $rows = $dbh->do( $stmt, undef, $spalte1, $spalte2, $spalte3 ); print "$rows Zeilen aktualisiert\n"; $dbh->rollback if $rows;
renee+2008-01-15 16:08:22--Wenn bei dem Update irgendetwas faul ist (was das DBMS entdecken kann, also nicht existente Spalten verwendet wurden oder ähnliches), dann wird der Update ja erst gar nicht ausgeführt. Dann wirst Du in $rows ein undef haben.
Ansonsten definiere mal, was Du als "korrekt" bezeichnest...
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
1) Führe ein fehlerhaftes Statement aus (oder versuche es)
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; }
|< 1 2 >| | 20 Einträge, 2 Seiten |