Module: Foreigner::ConnectionAdapters::MysqlAdapter
- Includes:
- Semantics::Sql2003
- Defined in:
- lib/foreigner/connection_adapters/mysql_adapter.rb
Instance Method Summary collapse
- #foreign_keys(table_name) ⇒ Object
-
#sql_for_remove_foreign_key(table, foreign_key_name) ⇒ Object
Override SQL2003 Semantics for MySQL.
Methods included from Semantics::Sql2003
#add_foreign_key, #foreign_key_definition, #remove_foreign_key, #supports_foreign_keys?
Instance Method Details
#foreign_keys(table_name) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/foreigner/connection_adapters/mysql_adapter.rb', line 12 def foreign_keys(table_name) fk_info = select_all %{ SELECT fk.referenced_table_name as 'to_table' ,fk.referenced_column_name as 'primary_key' ,fk.column_name as 'column' ,fk.constraint_name as 'name' FROM information_schema.key_column_usage fk WHERE fk.referenced_column_name is not null AND fk.table_schema = '#{@config[:database]}' AND fk.table_name = '#{table_name}' } create_table_info = select_one("SHOW CREATE TABLE #{quote_table_name(table_name)}")["Create Table"] fk_info.map do |row| = {:column => row['column'], :name => row['name'], :primary_key => row['primary_key']} if create_table_info =~ /CONSTRAINT #{quote_column_name(row['name'])} FOREIGN KEY .* REFERENCES .* ON DELETE (CASCADE|SET NULL)/ [:dependent] = case $1 when 'CASCADE' then :delete when 'SET NULL' then :nullify end end ForeignKeyDefinition.new(table_name.to_s, row['to_table'], ) end end |
#sql_for_remove_foreign_key(table, foreign_key_name) ⇒ Object
Override SQL2003 Semantics for MySQL
8 9 10 |
# File 'lib/foreigner/connection_adapters/mysql_adapter.rb', line 8 def sql_for_remove_foreign_key(table, foreign_key_name) "ALTER TABLE #{quote_table_name(table)} DROP FOREIGN KEY #{quote_column_name(foreign_key_name)}" end |