method
insert
v3.0.0 -
Show latest stable
- Class:
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
insert(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil)public
# File activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 407
def insert(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil)
# Extract the table from the insert sql. Yuck.
table = sql.split(" ", 4)[2].gsub('"', '')
# Try an insert with 'returning id' if available (PG >= 8.2)
if supports_insert_with_returning?
pk, sequence_name = *pk_and_sequence_for(table) unless pk
if pk
id = select_value("#{sql} RETURNING #{quote_column_name(pk)}")
clear_query_cache
return id
end
end
# Otherwise, insert then grab last_insert_id.
if insert_id = super
insert_id
else
# If neither pk nor sequence name is given, look them up.
unless pk || sequence_name
pk, sequence_name = *pk_and_sequence_for(table)
end
# If a pk is given, fallback to default sequence name.
# Don't fetch last insert id for a table without a pk.
if pk && sequence_name ||= default_sequence_name(table, pk)
last_insert_id(table, sequence_name)
end
end
end Related methods
- Instance methods
- active?
- adapter_name
- add_column
- begin_db_transaction
- change_column
- change_column_default
- change_column_null
- client_min_messages
- client_min_messages=
- columns
- commit_db_transaction
- create
- create_database
- create_savepoint
- current_database
- default_sequence_name
- disable_referential_integrity
- disconnect!
- distinct
- drop_database
- encoding
- escape_bytea
- execute
- index_name_length
- indexes
- insert
- native_database_types
- outside_transaction?
- pk_and_sequence_for
- primary_key
- query
- quote
- quote_column_name
- quote_string
- quote_table_name
- quoted_date
- reconnect!
- recreate_database
- release_savepoint
- remove_index!
- rename_column
- rename_table
- reset_pk_sequence!
- result_as_array
- rollback_db_transaction
- rollback_to_savepoint
- schema_search_path
- schema_search_path=
- select_rows
- set_standard_conforming_strings
- supports_ddl_transactions?
- supports_disable_referential_integrity?
- supports_insert_with_returning?
- supports_migrations?
- supports_primary_key?
- supports_savepoints?
- table_alias_length
- table_exists?
- tables
- type_to_sql
- unescape_bytea
- update_sql
- Class methods
- new
- Protected methods
-
postgresql_version -
translate_exception - Private methods
-
column_definitions -
configure_connection -
connect -
extract_pg_identifier_from_name -
last_insert_id -
select -
select_raw