Necesito enumerar las columnas de una tabla en el orden de definición de la tabla:
select * from syscolumns
where id = object_id('MyTable')
--order by colid
Al examinar las syscolumns
tablas, dos columnas parecen relevantes: colid
y colorder
. El artículo de MSDN sobre syscolumns dice:
colid | smallint | Column or parameter ID.
colorder | smallint | Identified for informational purposes only.
| Not supported. Future compatibility is not guaranteed.
Traté de correr
select * from syscolumns where colorder <> colid
que no produjo filas, y eso me hace pensar que estas columnas tienen los mismos valores la mayor parte del tiempo.
Parece que la apuesta más segura es usar colid. Sin embargo, me gustaría saber: ¿hay alguna diferencia entre estas dos columnas y, si la hay, cuál es esta diferencia?
Además, el artículo de MSDN no confirma que colid refleja el orden de la definición de la tabla. Si bien es razonable suponer que este es el caso, ¿podría informarme, si está seguro de que es así, cómo sabe que es así?