sqlite-transaction function

SQLite transaction management

SQLite transaction management

By default, SQLite is in auto-commit mode. dbBegin() starts a SQLite transaction and turns auto-commit off. dbCommit() and dbRollback() commit and rollback the transaction, respectively and turn auto-commit on. DBI::dbWithTransaction() is a convenient wrapper that makes sure that dbCommit() or dbRollback() is called. A helper function sqliteIsTransacting() is available to check the current transaction status of the connection.

## S4 method for signature 'SQLiteConnection' dbBegin(conn, .name = NULL, ..., name = NULL) ## S4 method for signature 'SQLiteConnection' dbCommit(conn, .name = NULL, ..., name = NULL) ## S4 method for signature 'SQLiteConnection' dbRollback(conn, .name = NULL, ..., name = NULL) sqliteIsTransacting(conn)

Arguments

  • conn: a SQLiteConnection object, produced by DBI::dbConnect()
  • .name: For backward compatibility, do not use.
  • ...: Needed for compatibility with generic. Otherwise ignored.
  • name: Supply a name to use a named savepoint. This allows you to nest multiple transaction

Examples

library(DBI) con <- dbConnect(SQLite(), ":memory:") dbWriteTable(con, "arrests", datasets::USArrests) dbGetQuery(con, "select count(*) from arrests") dbBegin(con) rs <- dbSendStatement(con, "DELETE from arrests WHERE Murder > 1") dbGetRowsAffected(rs) dbClearResult(rs) dbGetQuery(con, "select count(*) from arrests") dbRollback(con) dbGetQuery(con, "select count(*) from arrests")[1, ] dbBegin(con) rs <- dbSendStatement(con, "DELETE FROM arrests WHERE Murder > 5") dbClearResult(rs) dbCommit(con) dbGetQuery(con, "SELECT count(*) FROM arrests")[1, ] # Named savepoints can be nested -------------------------------------------- dbBegin(con, name = "a") dbBegin(con, name = "b") sqliteIsTransacting(con) dbRollback(con, name = "b") dbCommit(con, name = "a") dbDisconnect(con)

See Also

The corresponding generic functions DBI::dbBegin(), DBI::dbCommit(), and DBI::dbRollback().

  • Maintainer: Kirill Müller
  • License: LGPL (>= 2.1)
  • Last published: 2024-12-03