class Mkxms::Mssql::AdoptionScriptWriter::TableTypeKeyConstraintChecks
Attributes
constraint[R]
table[R]
Public Class Methods
new(table, constraint, error_sql_proc)
click to toggle source
Calls superclass method
# File lib/mkxms/mssql/adoption_script_writer.rb, line 337 def initialize(table, constraint, error_sql_proc) super() @table = table @constraint = constraint @error_sql_proc = error_sql_proc add_tests end
Public Instance Methods
add_tests()
click to toggle source
# File lib/mkxms/mssql/adoption_script_writer.rb, line 353 def add_tests dsl { puts "IF NOT EXISTS(%s)" do puts dedent %Q{ SELECT * FROM sys.key_constraints kc JOIN sys.table_types tt ON tt.type_table_object_id = kc.parent_object_id WHERE tt.user_type_id = TYPE_ID(#{table.qualified_name.sql_quoted}) AND kc.type = #{ case constraint.type when 'PRIMARY KEY' then 'PK' when 'UNIQUE' then 'UQ' else raise "Unknown key constraint type" end.sql_quoted } } constraint.columns.each_with_index do |col, i| puts dedent %Q{ AND ( SELECT ic.key_ordinal FROM sys.index_columns ic JOIN sys.columns c ON c.object_id = ic.object_id AND c.column_id = ic.column_id WHERE ic.object_id = kc.parent_object_id AND ic.index_id = kc.unique_index_id AND QUOTENAME(c.name) = #{col.name.sql_quoted} ) = #{i + 1} } end end puts "BEGIN"..."END" do puts error_sql "Table type #{table.qualified_name} does not have a #{constraint.type} constraint with the expected sequence of columns (#{constraint.columns.map(&:name).join(', ')})." end } end
error_sql(s)
click to toggle source
# File lib/mkxms/mssql/adoption_script_writer.rb, line 349 def error_sql(s) @error_sql_proc.call(s) end