# File lib/sqlite3/database.rb, line 488 def transaction( mode = :deferred ) execute "begin #{mode.to_s} transaction" @transaction_active = true if block_given? abort = false begin yield self rescue ::Object abort = true raise ensure abort and rollback or commit end end true end