Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions lib/active_record/connection_adapters/oracle_enhanced_adapter.rb
Original file line number Diff line number Diff line change
@@ -212,6 +212,17 @@ class OracleEnhancedAdapter < AbstractAdapter
cattr_accessor :default_sequence_start_value
self.default_sequence_start_value = 1

##
# :singleton-method:
# By default trigger based sequences are not supported.
# Enable this if you wish to manage your own primary key triggers, then you can avoid an
# exception being raised when using autogenerated sequence names in your ActiveRecord models:
#
# self.sequence_name = :autogenerated
#
cattr_accessor :unmanaged_autogenerated_sequences
self.unmanaged_autogenerated_sequences = false

##
# :singleton-method:
# By default, OracleEnhanced adapter will use longer 128 bytes identifier
@@ -493,6 +504,7 @@ def discard!
# called directly; used by ActiveRecord to get the next primary key value
# when inserting a new database record (see #prefetch_primary_key?).
def next_sequence_value(sequence_name)
return nil if unmanaged_autogenerated_sequences
# if sequence_name is set to :autogenerated then it means that primary key will be populated by trigger
raise ArgumentError.new "Trigger based primary key is not supported" if sequence_name == AUTOGENERATED_SEQUENCE_NAME
# call directly connection method to avoid prepared statement which causes fetching of next sequence value twice