Mostrar tabela de criação para MS SQL

declare @table varchar (100)
set @table = ‘Some_Table’ – defina o nome da tabela aqui
declare @sql table (s varchar (1000), id int identidade)


inserção de instrução de criação em valores @sql (s) (‘criar tabela ‘ + @table + ‘


inserção da lista de colunas em @sql (s)
selecione
‘[‘ + nome da
coluna + ‘]’ + tipo de dados + coalesce (‘(‘ + cast ( comprimento máximo do caractere como varchar) + ‘)’, ”) + ” +
caso quando existe (
ID seleccione a partir syscolumns
onde objecto nome (ID) = @ mesa
e nome = coluna
nome
e COLUMNPROPERTY (id, nome, ‘IsIdentity’) = 1
), em seguida,
‘IDENTIDADE (‘ +
fundido (ident semente (@Table ) as varchar) + ‘,’ +
cast (ident
incr (@table) as varchar) + ‘)’
else ”
end + ” +
(case quando IS NULLABLE = ‘No’ then ‘NOT’else ” end) + ‘NULL’ +
coalescer (‘DEFAULT’ + COLUMN
DEFAULT, ”) + ‘,’

from information schema.columns onde nome da tabela = @table
ordem por ordinal_position

– chave primária
declarar @pkname varchar (100)
seleccionar @pkname = restrição nome a partir de informação esquema.tabela restrições
onde a tabela
name = @Table e constraint_type = ‘PRIMARY KEY’

se (@pkname não é nulo) começar
inserção em @sql (s) valores ( ‘PRIMÁRIA CHAVE ( ‘)
inserção em @sql (s) de
escolha'[ ‘+ COLUNA NOME +’]’, a partir de informações schema.key coluna uso
onde nome da
restrição = @pkname ordem por posição ordinal
– remover
atualização de vírgula final @sql set s = left (s, len (s) -1) onde id = @@ identidade
inserir em valores @sql (s) (‘)’)
end
else begin
– remove
atualização de vírgula final @sql set s = left (s, len (s) -1) onde id = @@ identity
end


inserção de colchete de fechamento em valores @sql (s) (‘)’)

– resultado!
selecione s de @sql ordem por id