Estoy intentando modificar una tabla en el servidor SQL con una secuencia de comandos. En el pasado, siempre he hecho este tipo de cosas a través de una GUI, pero ahora necesito generar un script para los clientes.Insertar columna entre otras columnas en SQL Server usando la secuencia de comandos
que tienen una tabla de base de datos SQL Server que es así:
MyTable ------- ColA int NOT NULL ColB int NOT NULL ColC int NOT NULL ColD VARCHAR(100)
La clave principal se define a través de Cola, ColB y ColC.
Quiero la secuencia de comandos SQL para cambiar la tabla de este modo:
MyTable ------- ColA int NOT NULL ColB int NOT NULL ColX int NOT NULL (new column, default 0 for existing data) ColC int NOT NULL ColD VARCHAR(100)
La clave principal ahora se define por Cola, ColB, COLX y ColC.
Esto es fácil de hacer a través de la GUI de SQL Server. Pero cuando lo tengo generar un script a partir de eso, parece innecesariamente complejo. Básicamente, la secuencia de comandos crea una tabla temporal con el nuevo esquema, copia todos los datos, índices y restricciones de la tabla anterior en la tabla temporal, borra la tabla anterior, luego cambia el nombre de la nueva por el nombre de la anterior. Además, cuenta con líneas de este tipo:
ALTER TABLE dbo.Tmp_MyTable ADD CONSTRAINT
MyTable21792984_ColC_DF DEFAULT ((0)) FOR ColC
Me preocupa que estos números de aspecto al azar allí (es decir, 21792984) no serán los mismos en todas las instancias de base de datos de clientes. Se ven como algo que el servidor SQL genera al crear la base de datos que sería única para cada instancia.
¿Existe una manera más directa de cambiar la tabla mediante comandos SQL? Miré en línea, pero lo que encontré es básicamente básico y/o genérico.
Actualización: De las respuestas que he recibido, parece que la dificultad radica en poner la nueva columna "entre" dos columnas. Me di cuenta de que realmente no importa en qué orden se encuentran las columnas (si estoy equivocado, no duden en dejar una respuesta corrigiéndome). En mi caso, el cambio es mucho más simple si solo agrego la columna al final de la tabla, y nada en el código se basa en el orden específico de la columna.
Gracias, en un examen más detallado, el orden de las columnas no importa (excepto estéticamente). Solo agregar la columna al final lo hace una tarea mucho más fácil. – Kip
Si realmente desea que se modifique la orden, puede usar el orden Forzar columna en SQL Compare para hacer esto. Esto requiere una reconstrucción completa de la tabla, por lo que podría tomar tiempo si tiene una gran cantidad de datos. Los datos existentes serán preservados por SQL Compare. –