Module: ActiveRecord::ConnectionAdapters::OracleEnhancedSchemaStatementsExt
- Defined in:
- lib/active_record/connection_adapters/oracle_enhanced/schema_statements_ext.rb
Instance Method Summary collapse
-
#add_primary_key_trigger(table_name, options = {}) ⇒ Object
Create primary key trigger (so that you can skip primary key value in INSERT statement).
-
#add_synonym(name, table_name, options = {}) ⇒ Object
Add synonym to existing table or view or sequence.
-
#remove_synonym(name) ⇒ Object
Remove existing synonym to table or view or sequence Example:.
-
#synonyms ⇒ Object
get synonyms for schema dump.
- #table_definition_tablespace ⇒ Object
Instance Method Details
#add_primary_key_trigger(table_name, options = {}) ⇒ Object
Create primary key trigger (so that you can skip primary key value in INSERT statement). By default trigger name will be “table_name_pkt”, you can override the name with :trigger_name option (but it is not recommended to override it as then this trigger will not be detected by ActiveRecord model and it will still do prefetching of sequence value).
add_primary_key_trigger :users
You can also create primary key trigger using create_table
with :primary_key_trigger option:
create_table :users, :primary_key_trigger => true do |t|
# ...
end
20 21 22 23 |
# File 'lib/active_record/connection_adapters/oracle_enhanced/schema_statements_ext.rb', line 20 def add_primary_key_trigger(table_name, ={}) # call the same private method that is used for create_table :primary_key_trigger => true create_primary_key_trigger(table_name, ) end |
#add_synonym(name, table_name, options = {}) ⇒ Object
Add synonym to existing table or view or sequence. Can be used to create local synonym to remote table in other schema or in other database Examples:
add_synonym :posts, "blog.posts"
add_synonym :posts_seq, "blog.posts_seq"
add_synonym :employees, "hr.employees@dblink", :force => true
42 43 44 45 46 47 48 49 |
# File 'lib/active_record/connection_adapters/oracle_enhanced/schema_statements_ext.rb', line 42 def add_synonym(name, table_name, = {}) sql = "CREATE" if [:force] == true sql << " OR REPLACE" end sql << " SYNONYM #{quote_table_name(name)} FOR #{quote_table_name(table_name)}" execute sql end |
#remove_synonym(name) ⇒ Object
Remove existing synonym to table or view or sequence Example:
remove_synonym :posts, "blog.posts"
56 57 58 |
# File 'lib/active_record/connection_adapters/oracle_enhanced/schema_statements_ext.rb', line 56 def remove_synonym(name) execute "DROP SYNONYM #{quote_table_name(name)}" end |
#synonyms ⇒ Object
get synonyms for schema dump
61 62 63 64 65 66 |
# File 'lib/active_record/connection_adapters/oracle_enhanced/schema_statements_ext.rb', line 61 def synonyms #:nodoc: select_all("SELECT synonym_name, table_owner, table_name, db_link FROM all_synonyms WHERE owner = SYS_CONTEXT('userenv', 'current_schema')").collect do |row| OracleEnhanced::SynonymDefinition.new(oracle_downcase(row['synonym_name']), oracle_downcase(row['table_owner']), oracle_downcase(row['table_name']), oracle_downcase(row['db_link'])) end end |
#table_definition_tablespace ⇒ Object
25 26 27 28 29 30 31 32 |
# File 'lib/active_record/connection_adapters/oracle_enhanced/schema_statements_ext.rb', line 25 def table_definition_tablespace # TODO: Support specifying an :index_tablespace option in create_table? tablespace_sql = '' if tablespace = default_tablespace_for(:index) tablespace_sql << " USING INDEX TABLESPACE #{tablespace}" end tablespace_sql end |