我有一个执行存储在 YAML 文件中的 SQL 语句(更新、插入和删除)的类。我希望所有陈述都成为一项交易的一部分。如果任何 SQL 语句失败,那么它们将被回滚。如果所有语句都成功,那么它们将被提交。我正在连接到 MySQL 数据库。这是我的代码:
require 'dm-core'
class SqlExecuter
def initialize(input_yaml_file_name)
@input_yaml_file_name = input_yaml_file_name
@adapter = DataMapper.repository(:default).adapter
@sql_statements = YAML::load(File.open(input_yaml_file_name))
end
def execute()
puts "Executing SQL statements in #{@input_yaml_file_name} file...."
@sql_statements.each do | sql_statement |
@adapter.execute(sql_statement)
end
end
end # class SqlExecuter
我想让我的所有 @adapter.execute 调用成为一个事务的一部分。我查看了 dm-transactions gem 中的代码,但我不知道如何在这种情况下使用它。