Method: ActiveRecord::ConnectionAdapters::PostgreSQL::DatabaseStatements#exec_insert

Defined in:
activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb

#exec_insert(sql, name = nil, binds = [], pk = nil, sequence_name = nil, returning: nil) ⇒ Object

:nodoc:



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'activerecord/lib/active_record/connection_adapters/postgresql/database_statements.rb', line 45

def exec_insert(sql, name = nil, binds = [], pk = nil, sequence_name = nil, returning: nil) # :nodoc:
  if use_insert_returning? || pk == false
    super
  else
    result = internal_exec_query(sql, name, binds)
    unless sequence_name
      table_ref = extract_table_ref_from_insert_sql(sql)
      if table_ref
        pk = primary_key(table_ref) if pk.nil?
        pk = suppress_composite_primary_key(pk)
        sequence_name = default_sequence_name(table_ref, pk)
      end
      return result unless sequence_name
    end
    last_insert_id_result(sequence_name)
  end
end