Sha256: 20d792ef1bd8adc0e549cff71789662653074c780958e0930ec37144e88b129e
Contents?: true
Size: 1.76 KB
Versions: 2
Compression:
Stored size: 1.76 KB
Contents
module DbMeta module Oracle class Trigger < Base register_type("TRIGGER") attr_accessor :trigger_type, :trigger_event, :for_each, :table_name, :referencing_names, :description, :tigger_body def initialize(args = {}) super @extract_type = :embedded end def fetch(args = {}) connection_class = args[:connection_class] || Connection connection = connection_class.instance.get cursor = connection.exec("select trigger_type, triggering_event, table_name, referencing_names, description, trigger_body from user_triggers where trigger_name = '#{@name}'") while (row = cursor.fetch) @trigger_type = row[0].to_s @triggering_event = row[1].to_s @table_name = row[2].to_s @referencing_names = row[3].to_s @description = row[4].to_s @trigger_body = row[5].to_s end parse_trigger_type cursor.close ensure connection.logoff end def extract(args = {}) buffer = [] buffer << "CREATE OR REPLACE TRIGGER #{@name}" buffer << "#{@trigger_type} #{@triggering_event}" buffer << "ON #{@table_name}" buffer << @referencing_names.to_s buffer << @for_each.to_s if @for_each buffer << @trigger_body.strip.to_s if @trigger_body buffer << "/" buffer << nil buffer.join("\n") end private def parse_trigger_type @for_each = "FOR EACH ROW" if /each row/i.match?(@trigger_type) case @trigger_type when /before/i @trigger_type = "BEFORE" when /after/i @trigger_type = "AFTER" when /instead of/i @for_each = "FOR EACH ROW" end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
db_meta-0.12.0 | lib/db_meta/oracle/types/trigger.rb |
db_meta-0.11.0 | lib/db_meta/oracle/types/trigger.rb |