@@ -592,12 +592,22 @@ def column_type(ci:)
592
592
end
593
593
594
594
def column_definitions_sql ( database , identifier )
595
- object_name = prepared_statements ? "@0" : quote ( identifier . object )
596
- schema_name = if identifier . schema . blank?
597
- "schema_name()"
598
- else
599
- prepared_statements ? "@1" : quote ( identifier . schema )
600
- end
595
+ schema_name = "schema_name()"
596
+
597
+ if prepared_statements
598
+ object_name = "@0"
599
+ schema_name = "@1" if identifier . schema . present?
600
+ else
601
+ object_name = quote ( identifier . object )
602
+ schema_name = quote ( identifier . schema ) if identifier . schema . present?
603
+ end
604
+
605
+ object_id_arg = identifier . schema . present? ? "CONCAT(#{ schema_name } ,'.',#{ object_name } )" : object_name
606
+
607
+ if identifier . temporary_table?
608
+ database = "TEMPDB"
609
+ object_id_arg = "CONCAT('#{ database } ','..',#{ object_name } )"
610
+ end
601
611
602
612
%{
603
613
SELECT
@@ -652,7 +662,7 @@ def column_definitions_sql(database, identifier)
652
662
AND k.unique_index_id = ic.index_id
653
663
AND c.column_id = ic.column_id
654
664
WHERE
655
- o.name = #{ object_name }
665
+ o.Object_ID = Object_ID( #{ object_id_arg } )
656
666
AND s.name = #{ schema_name }
657
667
ORDER BY
658
668
c.column_id
@@ -674,7 +684,7 @@ def remove_check_constraints(table_name, column_name)
674
684
end
675
685
676
686
def remove_default_constraint ( table_name , column_name )
677
- # If their are foreign keys in this table, we could still get back a 2D array, so flatten just in case.
687
+ # If there are foreign keys in this table, we could still get back a 2D array, so flatten just in case.
678
688
execute_procedure ( :sp_helpconstraint , table_name , "nomsg" ) . flatten . select do |row |
679
689
row [ "constraint_type" ] == "DEFAULT on column #{ column_name } "
680
690
end . each do |row |
0 commit comments