2011-10-26 13 views
11
ALTER TABLE Log ADD log_id bigint IDENTITY BEFORE cust_id_fk 

El código anterior agrega una nueva columna a la última posición. Quiero que se agregue a la primera posición. También quiero hacerlo como clave principal.Agregue una columna a una posición específica en el servidor MSSQL

+2

El "orden" de las columnas en una tabla * realmente * no debería importar - su orden de almacenaje física es li kely diferente de lo que ves de todos modos. –

+1

Hace la diferencia ** no ** excepto en su TOC. [Uno] (http://stackoverflow.com/questions/6121884/sql-server-2008-cannot-insert-new-column-in-the-middle-position-and-change-dat/6121952#6121952) y [ Dos] (http://stackoverflow.com/questions/6692021/performance-space-implications-when-ordering-sql-server-columns/6692107#6692107). FYI @Damien_The_Unbeliever algo de información para respaldarlo – gbn

+2

Quiero que mis columnas se vean bonitas. – Chloe

Respuesta

9

Debería soltar la tabla y volver a crearla con las columnas en el orden correcto. Si realiza cambios en la tabla en SSMS, entonces puede generar un script de cambio para usted, que luego podría usar para implementar el cambio en un servidor de producción.

+0

Ese es un punto subjetivo. Sin embargo, su pregunta está etiquetada como SQL Server, de ahí que mencione SSMS. –

+0

SO ha seleccionado su respuesta porque no hay un método para implementar el mismo –

+0

Es por eso que ya no usamos MSSQL (solo digo) ..podría sugerir Google'ing para "MongoDB";) – sean2078

-2

Tiene que crear otra tabla y copiar los datos. ¿Pero echa un vistazo a la "posición ordinal" e intenta actualizarla?

SELECT 
    ORDINAL_POSITION 
    ,COLUMN_NAME 
    ,DATA_TYPE 
    ,CHARACTER_MAXIMUM_LENGTH 
    ,IS_NULLABLE 
    ,COLUMN_DEFAULT 
FROM 
    INFORMATION_SCHEMA.COLUMNS 
WHERE 
    TABLE_NAME = 'Product' 
ORDER BY 
    ORDINAL_POSITION ASC; 

La clave principal es otra pregunta para la que puede encontrar muchas respuestas.

+0

No relacionado y no se puede hacer de todos modos – gbn

3

Incluso si la pregunta es antigua, se necesitaría una información más precisa sobre Management Studio.

Puede crear la columna manualmente o con Management Studio. Pero Management Studio requerirá recrear la tabla y dará como resultado un tiempo de espera si ya tiene demasiados datos, evite a menos que la tabla sea liviana.

Para cambiar el orden de las columnas, basta con moverlas en Management Studio. Esto no debería requerir (es muy probable que existan excepciones) que Management Studio vuelva a crear la tabla, ya que es muy probable que cambie la ordenación de las columnas en las definiciones de la tabla.

Lo he hecho de esta manera en numerosas ocasiones con tablas que no pude agregar columnas con la GUI debido a los datos en ellas. Luego movió las columnas con la GUI de Management Studio y simplemente las guardó.

Pasarás de un tiempo de espera asegurado a unos pocos segundos de espera.

0

En MSSMS, seleccione la tabla en el explorador de objetos. Haga clic derecho y seleccione modificar. Eso traerá una nueva pestaña donde puede arrastrar las columnas a un nuevo orden predeterminado. ¡Guarde y listo! Hecho.

0

Pasos:

  1. cambia el nombre de la tabla original a tablename_temp
  2. crear una nueva tabla que contiene la nueva columna
  3. inserción en nombre de tabla SELECT * FROM tablename_temp
  4. recrear las claves externas y otra restricción en el nueva tabla
Cuestiones relacionadas