Skip to content

Commit 29b26ad

Browse files
committed
Implement a new remove_default_constraint method that uses sp_helpconstraint
1 parent 8f3ad09 commit 29b26ad

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

CHANGELOG

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11

22
MASTER
33

4+
* Implement a new remove_default_constraint method that uses sp_helpconstraint [Ken Collins]
5+
46
* Use a lazy match in add_order_by_for_association_limiting! to allow sub selects to be used. Resolves
57
ticket #11.
68

lib/active_record/connection_adapters/sqlserver_adapter.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -908,9 +908,10 @@ def remove_check_constraints(table_name, column_name)
908908
end
909909

910910
def remove_default_constraint(table_name, column_name)
911-
constraints = select_values("SELECT def.name FROM sysobjects def, syscolumns col, sysobjects tab WHERE col.cdefault = def.id AND col.name = '#{quote_string(column_name)}' AND tab.name = '#{quote_string(table_name)}' AND col.id = tab.id")
912-
constraints.each do |constraint|
913-
do_execute "ALTER TABLE #{quote_table_name(table_name)} DROP CONSTRAINT #{quote_column_name(constraint)}"
911+
select_all("EXEC sp_helpconstraint '#{quote_string(table_name)}','nomsg'").select do |row|
912+
row['constraint_type'] == "DEFAULT on column #{column_name}"
913+
end.each do |row|
914+
do_execute "ALTER TABLE #{quote_table_name(table_name)} DROP CONSTRAINT #{row['constraint_name']}"
914915
end
915916
end
916917

0 commit comments

Comments
 (0)