module SchemaPlus::Triggers::ActiveRecord::ConnectionAdapters::AbstractAdapter

Public Instance Methods

create_trigger(table_name, trigger_name, triggers, definition, options = {}) click to toggle source

Create a trigger. Valid options are :force

# File lib/schema_plus/triggers/active_record/connection_adapters/abstract_adapter.rb, line 8
def create_trigger(table_name, trigger_name, triggers, definition, options = {})
  SchemaMonkey::Middleware::Migration::CreateTrigger.start(connection: self, table_name: table_name, trigger_name: trigger_name, triggers: triggers, definition: definition, options: options) do |env|
    table_name   = env.table_name
    trigger_name = env.trigger_name
    triggers     = env.triggers
    definition   = env.definition
    options      = env.options

    definition   = definition.to_sql if definition.respond_to? :to_sql
    if options[: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 = {}) click to toggle source

Remove a trigger. Valid options are :if_exists and :cascade

drop_trigger 'my_table', 'trigger_name', if_exists: true
# File lib/schema_plus/triggers/active_record/connection_adapters/abstract_adapter.rb, line 29
def drop_trigger(table_name, trigger_name, options = {})
  SchemaMonkey::Middleware::Migration::CreateTrigger.start(connection: self, table_name: table_name, trigger_name: trigger_name, options: options) do |env|
    table_name   = env.table_name
    trigger_name = env.trigger_name
    options      = env.options

    sql = "DROP TRIGGER"
    sql += " IF EXISTS" if options[:if_exists]
    sql += " #{quote_table_name(trigger_name)} ON #{quote_table_name(table_name)}"
    sql += " CASCADE" if options[:cascade]

    execute sql
  end
end
trigger_definition(table_name, trigger_name, name = nil) click to toggle source

(abstract) Return the Trigger definition

# 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) click to toggle source

(abstract) Return the Trigger objects for triggers

# 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