Database Reference
In-Depth Information
dbh . commit
dbh [ 'AutoCommit' ] = true
rescue DBI : :DatabaseError => e
puts "Transaction failed, rolling back. Error was:"
puts " #{ e . err } : #{ e . errstr } "
begin # empty exception handler in case rollback fails
dbh . rollback
dbh [ 'AutoCommit' ] = true
rescue
end
end
Ruby also supports a transaction method, which is associated with a code block and
commits or rolls back automatically depending on whether the code block succeeds or
fails:
begin
dbh [ 'AutoCommit' ] = false
dbh . transaction do | dbh |
dbh . do ( "UPDATE money SET amt = amt - 6 WHERE name = 'Eve'" )
dbh . do ( "UPDATE money SET amt = amt + 6 WHERE name = 'Ida'" )
end
dbh [ 'AutoCommit' ] = true
rescue DBI : :DatabaseError => e
puts "Transaction failed, rolling back. Error was:"
puts " #{ e . err } : #{ e . errstr } "
dbh [ 'AutoCommit' ] = true
end
With the transaction method, there is no need to invoke commit or rollback explicitly.
transaction does raise an exception if it rolls back, so the example still uses a begin/
rescue block for error detection.
17.6. Using Transactions in PHP Programs
Problem
You want to perform a transaction in a PHP script.
Solution
Use the standard PDO transaction support mechanism.
Discussion
The PDO extension supports a transaction abstraction that can be used to perform
transactions. To begin a transaction, use the beginTransaction() method. Then, after
executing your statements, invoke either commit() or rollback() to commit or roll
Search WWH ::




Custom Search