3

我正在使用该DBI包向 MySQL 服务器发送查询。我想确保将这些查询作为单个事务发送,以避免表锁定。

我使用该dbSendQuery函数发送查询:

df <- fetch(dbSendQuery(connection,
                  statement = "SELECT *
                               FROM table"),
      n = -1)

DBI 包很少提及处理事务,但它确实列出了这些功能:dbCommitdbRollback也不dbCallProc在标题下:

注意:以下方法处理事务和存储过程。

小插图中。似乎没有一个与将查询作为单个事务发送有关。

如何确保将这些查询作为单个事务发送?

4

1 回答 1

2

警告:未经测试。

您将需要 MySQL 的一些帮助。默认情况下,MySQL 在启用自动提交模式的情况下运行。要禁用自动提交模式,您需要发出一条START TRANSACTION语句。我怀疑dbCommitdbRollback简单地分别执行COMMITROLLBACK

详情:http ://dev.mysql.com/doc/refman/5.0/en/commit.html

所以你需要做类似的事情

dbSendQuery(connection, "START TRANSACTION")
# add your dbSendQuery code here
dbCommit(connection)
于 2013-12-05T22:20:52.460 回答