gpt4 book ai didi

ruby - 如何使用 ruby​​ mysql2 执行事务

转载 作者:数据小太阳 更新时间:2023-10-29 07:11:42 25 4
gpt4 key购买 nike

我已经开始使用 mysql2 gem。我试图弄清楚一些基本的事情——其中之一是如何明确地执行事务(对于批处理操作,比如多个 INSERT/UPDATE 查询)。

在旧的 ruby-mysql 中,这是我的方法:

client  = Mysql.real_connect(...)
inserts = [
"INSERT INTO ...",
"UPDATE .. WHERE id=..",
# etc
]

client.autocommit(false)
inserts.each do |ins|
begin
client.query(ins)
rescue
# handle errors or abort entirely
end
end
client.commit

我在文档中找不到太多信息 - 如何使用 mysql2 完成同样的操作?

最佳答案

我刚刚做了一个实现:

class DBConnector
def transaction(&block)
raise ArgumentError, "No block was given" unless block_given?
begin
client.query("BEGIN")
yield
client.query("COMMIT")
rescue
client.query("ROLLBACK")
end
end
end

所以你可以这样使用:

DBConnector.transaction do
# your db queries here
end

关于ruby - 如何使用 ruby​​ mysql2 执行事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9288593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com