T-SQL ALTER TABLE con posicion de columna

24/04/2009 - 16:09 por C a r l o s A n t o n i o | Informe spam
Saludos Compañeros,

Estoy trabajando un script para modificar varias tablas (como 25 o 30
tablas) de una base de datos como parte de un proyecto de migración. La
mayor parte de los cambios consiste en crear un campo que se constituirá
como el nuevo primary key. Para esto, por supuesto, voy a utilizar las
bondades del ALTER TABLE. El único problema es que no encuentro
documentación sobre cómo puedo añadir una columna y posicionarla antes que
las demás.

La razón es estética, pero también funcional, pues es más fácil para el
equipo de trabajo localizar los PK cuando están trabajando en el desarrollo
de la aplicación que se está planificando.

¿Es posible hacer esto? ¿Conoce alguien de un enlace que me pueda ayudar?
Tengo sospechas de que se puede hacer, pues yo lo he hecho antes en MySQL
con las cláusulas FIRST y BEFORE.

Muchas gracias por la ayuda.

C a r l o s A n t o n i o

Preguntas similare

Leer las respuestas

#1 Rubén Garrigós
24/04/2009 - 16:41 | Informe spam
Hola Carlos Antonio,

Hasta donde yo se no es posible mediante T-SQL modificar el orden de las
columnas. Si tan importante es para ti el tener dicha columna en orden te
recomiendo que crees una nueva la tabla con la nueva columna, hagas un
volcado de los datos y luego borres la anterior y renombras la nueva. Si
buscas por ahi igual encuentras algunos trucos para modificar el orden de la
columna modificando tablas de sistema pero yo te recomendaría que fueses por
esa vía bajo ningún concepto.

Si con las "bondades" del ALTER TABLE lo que pretendías evitar era la
lectura/escritura de los datos de la tabla... me temo que va a ser
complicado no pasar por ese trámite.


Rubén Garrigós
Solid Quality Mentors

"C a r l o s A n t o n i o" <carlvazpr¿arroba?yahoo.com> wrote in message
news:
Saludos Compañeros,

Estoy trabajando un script para modificar varias tablas (como 25 o 30
tablas) de una base de datos como parte de un proyecto de migración. La
mayor parte de los cambios consiste en crear un campo que se constituirá
como el nuevo primary key. Para esto, por supuesto, voy a utilizar las
bondades del ALTER TABLE. El único problema es que no encuentro
documentación sobre cómo puedo añadir una columna y posicionarla antes que
las demás.

La razón es estética, pero también funcional, pues es más fácil para el
equipo de trabajo localizar los PK cuando están trabajando en el
desarrollo de la aplicación que se está planificando.

¿Es posible hacer esto? ¿Conoce alguien de un enlace que me pueda ayudar?
Tengo sospechas de que se puede hacer, pues yo lo he hecho antes en MySQL
con las cláusulas FIRST y BEFORE.

Muchas gracias por la ayuda.

C a r l o s A n t o n i o

Respuesta Responder a este mensaje
#2 Gustavo Larriera
24/04/2009 - 17:28 | Informe spam
Para cambiar el orden de las columnas hay que DROPear la tabla y volverla a
crear. Durante la beta de SQL Server 2005 fue una de las sugerencias que se
pidió (una sintaxis en el ALTER TABLE para indicar la posición de una
columna) pero no fué aceptada hasta donde conozco.

En las tablas del sistema la posición de la columna se almacena mediante un
valor entero, pero yo evitaría jugar con eso.

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Rubén Garrigós" wrote:

Hola Carlos Antonio,

Hasta donde yo se no es posible mediante T-SQL modificar el orden de las
columnas. Si tan importante es para ti el tener dicha columna en orden te
recomiendo que crees una nueva la tabla con la nueva columna, hagas un
volcado de los datos y luego borres la anterior y renombras la nueva. Si
buscas por ahi igual encuentras algunos trucos para modificar el orden de la
columna modificando tablas de sistema pero yo te recomendara que fueses por
esa va bajo ningn concepto.

Si con las "bondades" del ALTER TABLE lo que pretendas evitar era la
lectura/escritura de los datos de la tabla... me temo que va a ser
complicado no pasar por ese trmite.


Rubn Garrigs
Solid Quality Mentors

"C a r l o s A n t o n i o" <carlvazprarroba?yahoo.com> wrote in message
news:
> Saludos Compaeros,
>
> Estoy trabajando un script para modificar varias tablas (como 25 o 30
> tablas) de una base de datos como parte de un proyecto de migracin. La
> mayor parte de los cambios consiste en crear un campo que se constituir
> como el nuevo primary key. Para esto, por supuesto, voy a utilizar las
> bondades del ALTER TABLE. El nico problema es que no encuentro
> documentacin sobre cmo puedo aadir una columna y posicionarla antes que
> las dems.
>
> La razn es esttica, pero tambin funcional, pues es ms fcil para el
> equipo de trabajo localizar los PK cuando estn trabajando en el
> desarrollo de la aplicacin que se est planificando.
>
> Es posible hacer esto? Conoce alguien de un enlace que me pueda ayudar?
> Tengo sospechas de que se puede hacer, pues yo lo he hecho antes en MySQL
> con las clusulas FIRST y BEFORE.
>
> Muchas gracias por la ayuda.
>
> C a r l o s A n t o n i o
>

Respuesta Responder a este mensaje
#3 Maxi
24/04/2009 - 18:26 | Informe spam
Hola, a nivel TSQL no existe eso y ademas no tiene mas que un sentido
estetico ya que tecnicamente es indistinto el orden de esas columnas.

Es mas, este tipo de cambios desde el SSMS si los quiere aplicar lo que
termina haciendo es un drop de la tabla y crear una temporal, muchos
desarrolladores esto no lo conoce y dependiendo de la cantidad de registros
y criticidad de la tabla se podia entrar en algun problema.

Es mas aqui le dejo un link a una de las mejoras que han hecho en ssms 2008
para evitar que este tipo de cambios impacten sobre la performance.

Pienselo bien, para que quiere las columnas en un orden?

http://blog.maxiaccotto.com/post/20...-2008.aspx



Maxi Accotto
Microsoft MVP en SQL Server
Consultor en SQL Server



"C a r l o s A n t o n i o" <carlvazpr¿arroba?yahoo.com> escribió en el
mensaje de noticias:
Saludos Compañeros,

Estoy trabajando un script para modificar varias tablas (como 25 o 30
tablas) de una base de datos como parte de un proyecto de migración. La
mayor parte de los cambios consiste en crear un campo que se constituirá
como el nuevo primary key. Para esto, por supuesto, voy a utilizar las
bondades del ALTER TABLE. El único problema es que no encuentro
documentación sobre cómo puedo añadir una columna y posicionarla antes que
las demás.

La razón es estética, pero también funcional, pues es más fácil para el
equipo de trabajo localizar los PK cuando están trabajando en el
desarrollo de la aplicación que se está planificando.

¿Es posible hacer esto? ¿Conoce alguien de un enlace que me pueda ayudar?
Tengo sospechas de que se puede hacer, pues yo lo he hecho antes en MySQL
con las cláusulas FIRST y BEFORE.

Muchas gracias por la ayuda.

C a r l o s A n t o n i o

Respuesta Responder a este mensaje
#4 Carlos Sacristan
24/04/2009 - 21:26 | Informe spam
Tal y como bien dicen los demás, eso no es posible en SQL Server. Si lo
quieres hacer por temas de facilidades a los desarrolladores la única
solución es la de recrear la tabla, con las implicaciones que ello tiene.
Sin embargo, tal vez podrías generar esos nuevos campos que son PK con algún
identificador que también ayude a los desarrolladores a localizarlos como
pueda ser un prefijo o similar.

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil. si ambas están congeladas."
Edward V. Berard, ingeniero informático

http://blogs.solidq.com/es/elrincondeldba

"C a r l o s A n t o n i o" <carlvazpr¿arroba?yahoo.com> escribió en el
mensaje news:
Saludos Compañeros,

Estoy trabajando un script para modificar varias tablas (como 25 o 30
tablas) de una base de datos como parte de un proyecto de migración. La
mayor parte de los cambios consiste en crear un campo que se constituirá
como el nuevo primary key. Para esto, por supuesto, voy a utilizar las
bondades del ALTER TABLE. El único problema es que no encuentro
documentación sobre cómo puedo añadir una columna y posicionarla antes que
las demás.

La razón es estética, pero también funcional, pues es más fácil para el
equipo de trabajo localizar los PK cuando están trabajando en el
desarrollo de la aplicación que se está planificando.

¿Es posible hacer esto? ¿Conoce alguien de un enlace que me pueda ayudar?
Tengo sospechas de que se puede hacer, pues yo lo he hecho antes en MySQL
con las cláusulas FIRST y BEFORE.

Muchas gracias por la ayuda.

C a r l o s A n t o n i o

Respuesta Responder a este mensaje
#5 C a r l o s A n t o n i o
25/04/2009 - 16:15 | Informe spam
Muchas gracias por las respuestas de todos Tenía la sospecha de cuales
serían sus contestaciones pues mientras esperaba me dediqué a buscar en la
internet sin encontrar nada. La razón para cambiar el orden de las columnas
es sencilla: "El jefe lo pidió.". Aunque puede ser una tarea sin sentido,
no cabe la duda que será interesante lograrlo máxime si me pagan por ello.

Voy a seguir sus consejos y voy a DROPear y recrear las tablas a ver que tal
resulta.

Muchas gracias por su ayuda desinteresada y saludos,

Carlos



"Carlos Sacristan" <nomail> wrote in message
news:
Tal y como bien dicen los demás, eso no es posible en SQL Server. Si lo
quieres hacer por temas de facilidades a los desarrolladores la única
solución es la de recrear la tabla, con las implicaciones que ello tiene.
Sin embargo, tal vez podrías generar esos nuevos campos que son PK con
algún identificador que también ayude a los desarrolladores a localizarlos
como pueda ser un prefijo o similar.

"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil. si ambas están congeladas."
Edward V. Berard, ingeniero informático

http://blogs.solidq.com/es/elrincondeldba

"C a r l o s A n t o n i o" <carlvazpr¿arroba?yahoo.com> escribió en el
mensaje news:
Saludos Compañeros,

Estoy trabajando un script para modificar varias tablas (como 25 o 30
tablas) de una base de datos como parte de un proyecto de migración. La
mayor parte de los cambios consiste en crear un campo que se constituirá
como el nuevo primary key. Para esto, por supuesto, voy a utilizar las
bondades del ALTER TABLE. El único problema es que no encuentro
documentación sobre cómo puedo añadir una columna y posicionarla antes
que las demás.

La razón es estética, pero también funcional, pues es más fácil para el
equipo de trabajo localizar los PK cuando están trabajando en el
desarrollo de la aplicación que se está planificando.

¿Es posible hacer esto? ¿Conoce alguien de un enlace que me pueda
ayudar? Tengo sospechas de que se puede hacer, pues yo lo he hecho antes
en MySQL con las cláusulas FIRST y BEFORE.

Muchas gracias por la ayuda.

C a r l o s A n t o n i o





Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida