我正在使用DBI
包向MySQL服务器发送查询。我想确保这些查询作为单个事务发送,以避免表锁定。
我使用dbSendQuery
函数发送查询:
df <- fetch(dbSendQuery(connection,
statement = "SELECT *
FROM table"),
n = -1)
DBI软件包几乎没有说明处理事务,但它所具有的功能列在这些函数下:标题下的dbCommit
,dbRollback
和dbCallProc
:
vignette中的注意:以下方法处理事务和存储 程序
。似乎没有涉及将查询作为单个事务发送。
如何确保将这些查询作为单个交易发送?
答案 0 :(得分:1)
警告:未经过测试。
你需要MySQL的一些帮助。默认情况下,MySQL在启用自动提交模式下运行。要禁用自动提交模式,您需要发出START TRANSACTION
语句。我怀疑dbCommit
和dbRollback
只是分别执行COMMIT
和ROLLBACK
。
详细信息:http://dev.mysql.com/doc/refman/5.0/en/commit.html
所以你需要做一些像
这样的事情dbSendQuery(connection, "START TRANSACTION")
# add your dbSendQuery code here
dbCommit(connection)