Preciso listar colunas de uma tabela na ordem de definição de tabela:
select * from syscolumns
where id = object_id('MyTable')
--order by colid
Examinando as syscolumns
tabelas, duas colunas parecem relevantes: colid
e colorder
. O artigo do MSDN sobre syscolumns diz:
colid | smallint | Column or parameter ID.
colorder | smallint | Identified for informational purposes only.
| Not supported. Future compatibility is not guaranteed.
Eu tentei correr
select * from syscolumns where colorder <> colid
que não produziu linhas, e isso me faz pensar que essas colunas têm os mesmos valores na maioria das vezes.
Parece que a aposta mais segura é usar colid. No entanto, eu ficaria curioso para saber: existe uma diferença entre essas duas colunas e, se houver, qual é essa diferença?
O artigo do MSDN também não confirma que colid reflete a ordem da definição da tabela. Embora seja razoável supor que esse seja o caso, você poderia me avisar, se tiver certeza de que é esse o caso, como sabe disso?
fonte