use strict; use warnings; use DBI; my $dbh = DBI->connect( ... ); use transactions $dbh; $dbh->do('delete from foo'); transaction { for (1..10) { my $sth = $dbh->prepare('insert into foo values(?,?,?)'); $sth->execute($_, chr(ord('a')+$_), chr(ord('z')-$_)); rollback if $_ == 5; } }; print map "@$_\n", @{$dbh->selectall_arrayref('select * from foo')}; $dbh->disconnect; __END__ results: 1 b y 2 c x 3 d w 4 e v 5 f u