Method: Sequel::Dataset#multi_insert_sql

Defined in:
lib/sequel/dataset/sql.rb

#multi_insert_sql(columns, values) ⇒ Object

Returns an array of insert statements for inserting multiple records. This method is used by multi_insert to format insert statements and expects a keys array and and an array of value arrays.



150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# File 'lib/sequel/dataset/sql.rb', line 150

def multi_insert_sql(columns, values)
  case multi_insert_sql_strategy
  when :values
    sql = LiteralString.new('VALUES ')
    expression_list_append(sql, values.map{|r| Array(r)})
    [insert_sql(columns, sql)]
  when :union
    c = false
    sql = LiteralString.new
    u = ' UNION ALL SELECT '
    f = empty_from_sql
    values.each do |v|
      if c
        sql << u
      else
        sql << 'SELECT '
        c = true
      end
      expression_list_append(sql, v)
      sql << f if f
    end
    [insert_sql(columns, sql)]
  else
    values.map{|r| insert_sql(columns, r)}
  end
end