有没有办法看到续集表达式将生成的原始SQL?

时间:2013-12-16 19:12:08

标签: ruby sequel

说我有一个续集表达式,如:

db.select(:id).from(:some_table).where(:foo => 5)

有没有办法获得它将生成的SQL字符串(即"SELECT id FROM some_table WHERE foo = 5")?我注意到,对上面表达式的结果调用inspectto_s包括生成的SQL,但不确定如何直接访问它。

那些不返回数据集的续集表达式如何:

db.from(:some_table).update(:foo => 5)

在执行之前是否可以从中查看SQL?

1 个答案:

答案 0 :(得分:24)

您可以在数据集上调用sql

db.select(:id).from(:some_table).where(:foo => 5).sql # => "SELECT `id` FROM `some_table` WHERE (`foo` = 5)"

对于更新查询,您可以执行以下操作:

db.from(:some_table).update_sql(:foo => 5) # => "UPDATE `some_table` SET `foo` = 5"

一些类似的有用方法:

insert_sql
delete_sql
truncate_sql