Module: SchemaPlus::Triggers::ActiveRecord::ConnectionAdapters::AbstractAdapter
- Defined in:
- lib/schema_plus/triggers/active_record/connection_adapters/abstract_adapter.rb
Instance Method Summary collapse
-
#create_trigger(table_name, trigger_name, triggers, definition, options = {}) ⇒ Object
Create a trigger.
-
#drop_trigger(table_name, trigger_name, options = {}) ⇒ Object
Remove a trigger.
-
#trigger_definition(table_name, trigger_name, name = nil) ⇒ Object
(abstract) Return the Trigger definition.
-
#triggers(name = nil) ⇒ Object
(abstract) Return the Trigger objects for triggers.
Instance Method Details
#create_trigger(table_name, trigger_name, triggers, definition, options = {}) ⇒ Object
Create a trigger. Valid options are :force
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/schema_plus/triggers/active_record/connection_adapters/abstract_adapter.rb', line 8 def create_trigger(table_name, trigger_name, triggers, definition, = {}) SchemaMonkey::Middleware::Migration::CreateTrigger.start(connection: self, table_name: table_name, trigger_name: trigger_name, triggers: triggers, definition: definition, options: ) do |env| table_name = env.table_name trigger_name = env.trigger_name triggers = env.triggers definition = env.definition = env. definition = definition.to_sql if definition.respond_to? :to_sql if [:force] drop_trigger(table_name, trigger_name, if_exists: true) end execute "CREATE TRIGGER #{quote_table_name(trigger_name)} #{triggers} ON #{quote_table_name(table_name)} #{definition}" end end |
#drop_trigger(table_name, trigger_name, options = {}) ⇒ Object
Remove a trigger. Valid options are :if_exists and :cascade
drop_trigger 'my_table', 'trigger_name', if_exists: true
29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/schema_plus/triggers/active_record/connection_adapters/abstract_adapter.rb', line 29 def drop_trigger(table_name, trigger_name, = {}) SchemaMonkey::Middleware::Migration::CreateTrigger.start(connection: self, table_name: table_name, trigger_name: trigger_name, options: ) do |env| table_name = env.table_name trigger_name = env.trigger_name = env. sql = "DROP TRIGGER" sql += " IF EXISTS" if [:if_exists] sql += " #{quote_table_name(trigger_name)} ON #{quote_table_name(table_name)}" sql += " CASCADE" if [:cascade] execute sql end end |
#trigger_definition(table_name, trigger_name, name = nil) ⇒ Object
(abstract) Return the Trigger definition
56 57 58 |
# File 'lib/schema_plus/triggers/active_record/connection_adapters/abstract_adapter.rb', line 56 def trigger_definition(table_name, trigger_name, name = nil) raise "Internal Error: Connection adapter did not override abstract function" end |
#triggers(name = nil) ⇒ Object
(abstract) Return the Trigger objects for triggers
51 52 53 |
# File 'lib/schema_plus/triggers/active_record/connection_adapters/abstract_adapter.rb', line 51 def triggers(name = nil) raise "Internal Error: Connection adapter did not override abstract function" end |