@@ -571,12 +571,22 @@ def column_definitions(table_name)
571
571
end
572
572
573
573
def column_definitions_sql ( database , identifier )
574
- object_name = prepared_statements ? "@0" : quote ( identifier . object )
575
- schema_name = if identifier . schema . blank?
576
- "schema_name()"
577
- else
578
- prepared_statements ? "@1" : quote ( identifier . schema )
579
- end
574
+ schema_name = "schema_name()"
575
+
576
+ if prepared_statements
577
+ object_name = "@0"
578
+ schema_name = "@1" if identifier . schema . present?
579
+ else
580
+ object_name = quote ( identifier . object )
581
+ schema_name = quote ( identifier . schema ) if identifier . schema . present?
582
+ end
583
+
584
+ object_id_arg = identifier . schema . present? ? "CONCAT(#{ schema_name } ,'.',#{ object_name } )" : object_name
585
+
586
+ if identifier . temporary_table?
587
+ database = "TEMPDB"
588
+ object_id_arg = "CONCAT('#{ database } ','..',#{ object_name } )"
589
+ end
580
590
581
591
%{
582
592
SELECT
@@ -631,7 +641,7 @@ def column_definitions_sql(database, identifier)
631
641
AND k.unique_index_id = ic.index_id
632
642
AND c.column_id = ic.column_id
633
643
WHERE
634
- o.name = #{ object_name }
644
+ o.Object_ID = Object_ID( #{ object_id_arg } )
635
645
AND s.name = #{ schema_name }
636
646
ORDER BY
637
647
c.column_id
@@ -653,7 +663,7 @@ def remove_check_constraints(table_name, column_name)
653
663
end
654
664
655
665
def remove_default_constraint ( table_name , column_name )
656
- # If their are foreign keys in this table, we could still get back a 2D array, so flatten just in case.
666
+ # If there are foreign keys in this table, we could still get back a 2D array, so flatten just in case.
657
667
execute_procedure ( :sp_helpconstraint , table_name , "nomsg" ) . flatten . select do |row |
658
668
row [ "constraint_type" ] == "DEFAULT on column #{ column_name } "
659
669
end . each do |row |
0 commit comments