2010-10-19 47 views
5

Me gustaría saber si hay una forma de agregar una columna a una tabla de SQL Server una vez creada y en una posición específica.Agregar columna en SQL Server en lugar específico?

Gracias.

+2

Lamentablemente, puede ver cómo lo hace Management Studio agregando su columna y guardando una copia del script de cambio. – Kane

+1

Y no debe depender del orden de las columnas en la tabla para su salida, se está configurando con código frágil. Como se menciona a continuación, especifique las columnas (y su orden) en su seleccione – BlackICE

Respuesta

1

Con SQL Server Management Studio se puede abrir la tabla en el diseño y arrastrar y soltar la columna donde desea

1

Como dice Kane, que no es posible de una manera directa. Puede ver cómo lo hace Management Studio agregando una columna en el modo de diseño y revisando el script de cambio.

Si la columna no está en la última posición, la secuencia de comandos básicamente descarta la tabla y la recrea, con la nueva columna en la posición deseada.

2

La forma más segura de hacerlo es.

  • crear su nueva tabla con el fin columna correcta
  • Copiar los datos de la mesa de edad.
  • Suelta la tabla anterior.
2

La única forma segura de hacerlo es crear una nueva tabla (con la columna donde lo desee), migrar los datos, soltar la tabla original y renombrar la nueva tabla con el nombre original.

Esto es lo que Management Studio hace por usted cuando inserta columnas.

8

Puede hacerlo en Management-Studio. Puede examinar la forma en que esto se logra generando el script SQL ANTES de guardar el cambio. Básicamente se logra mediante:

  • eliminación de todas las claves externas
  • crear una nueva tabla con la columna añadido
  • copiar todos los datos de la vieja a la nueva tabla
  • dejar caer la vieja mesa de
  • cambio de nombre la nueva tabla al nombre antiguo
  • recrear todas las claves externas
0

No.

Básicamente, SSMS detrás de las escenas copiará la tabla, las restricciones, etc., soltará la tabla anterior y cambiará el nombre de la nueva.

La razón es simple - las columnas no están destinados a ser ordenado (ni son filas), por lo que siempre está destinado a enumerar las columnas que desea en un conjunto de resultados (select * es un poco de un truco)

1

En la tabla de bases de datos, las columnas no tienen orden.

Escribir adecuada instrucción de selección y crear una vista

5

Además de todas las otras respuestas, recuerda que puedes reordenar y renombrar columnas en las vistas. Por lo tanto, si considera que es necesario almacenar los datos en un formato pero presentarlos en otro, simplemente puede agregar la columna al final de la tabla y crear una vista de tabla única que reordena y cambia el nombre de las columnas que desea mostrar.En casi cualquier circunstancia, esta vista se comportará exactamente como la tabla original.

+0

+1 para una gran idea – Kane

+0

+1 Para el pensamiento alternativo. –

+1

Si tiene suficiente OCD como para querer un pedido específico de columnas, entonces supongo que disfrutará de los objetos adicionales para administrar ... – gbn

2

Como han señalado otros, puede hacer esto creando una tabla temporal moviendo los datos y eliminando la tabla original y luego cambiando el nombre de la otra tabla. Esto es estúpido de hacer sin embargo. Si su tabla es grande, puede tomar mucho tiempo hacerlo y los usuarios serán bloqueados durante el proceso. Esto es algo que NUNCA desea hacer a cualquier tabla en producción.

No hay absolutamente ninguna razón para preocuparse por el orden de las columnas en una tabla, ya que no debería depender del orden de las columnas de todos modos (¿qué pasaría si alguien más hiciera lo mismo estúpido?). Ninguna consulta debe usar seleccionar * u posiciones ordinales para obtener columnas. Si está haciendo esto ahora, se trata de un código roto y debe corregirse inmediatamente ya que los resultados no siempre serán los esperados. Por ejemplo, si inserta una columna donde lo desea y alguien más está utilizando select * para un informe, de repente aparece el número de pieza en el lugar que solía contener el precio.

Haciendo lo que quiere hacer, puede romper mucho más de lo que arregla colocando la columna donde lo desea personalmente. El orden de las columnas en tablas siempre debe ser irrelevante. No debería hacer esto cada vez que desee que aparezcan columnas en un orden diferente.

Cuestiones relacionadas