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’ + COLUMNDEFAULT, ”) + ‘,’
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