Skip to content

Commit a2d6078

Browse files
authored
Allow drop_table to accept an array of table names (#1223)
1 parent 3194885 commit a2d6078

File tree

1 file changed

+17
-15
lines changed

1 file changed

+17
-15
lines changed

lib/active_record/connection_adapters/sqlserver/schema_statements.rb

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,24 @@ def create_table(table_name, **options)
1414
res
1515
end
1616

17-
def drop_table(table_name, **options)
18-
# Mimic CASCADE option as best we can.
19-
if options[:force] == :cascade
20-
execute_procedure(:sp_fkeys, pktable_name: table_name).each do |fkdata|
21-
fktable = fkdata["FKTABLE_NAME"]
22-
fkcolmn = fkdata["FKCOLUMN_NAME"]
23-
pktable = fkdata["PKTABLE_NAME"]
24-
pkcolmn = fkdata["PKCOLUMN_NAME"]
25-
remove_foreign_key fktable, name: fkdata["FK_NAME"]
26-
execute "DELETE FROM #{quote_table_name(fktable)} WHERE #{quote_column_name(fkcolmn)} IN ( SELECT #{quote_column_name(pkcolmn)} FROM #{quote_table_name(pktable)} )"
17+
def drop_table(*table_names, **options)
18+
table_names.each do |table_name|
19+
# Mimic CASCADE option as best we can.
20+
if options[:force] == :cascade
21+
execute_procedure(:sp_fkeys, pktable_name: table_name).each do |fkdata|
22+
fktable = fkdata["FKTABLE_NAME"]
23+
fkcolmn = fkdata["FKCOLUMN_NAME"]
24+
pktable = fkdata["PKTABLE_NAME"]
25+
pkcolmn = fkdata["PKCOLUMN_NAME"]
26+
remove_foreign_key fktable, name: fkdata["FK_NAME"]
27+
execute "DELETE FROM #{quote_table_name(fktable)} WHERE #{quote_column_name(fkcolmn)} IN ( SELECT #{quote_column_name(pkcolmn)} FROM #{quote_table_name(pktable)} )"
28+
end
29+
end
30+
if options[:if_exists] && version_year < 2016
31+
execute "IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = #{quote(table_name)}) DROP TABLE #{quote_table_name(table_name)}", "SCHEMA"
32+
else
33+
super
2734
end
28-
end
29-
if options[:if_exists] && version_year < 2016
30-
execute "IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = #{quote(table_name)}) DROP TABLE #{quote_table_name(table_name)}", "SCHEMA"
31-
else
32-
super
3335
end
3436
end
3537

0 commit comments

Comments
 (0)