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

#6 Maxi
25/04/2009 - 16:31 | Informe spam
Hola, aqui te paso un ejemplo completo de TSQL para que te des una idea, en
el mismo puse el apellido luego del nombre


BEGIN TRANSACTION
GO
CREATE TABLE dbo.Tmp_CLIENTES
(
ID int NOT NULL,
NOMBRE varchar(50) NULL,
APELLIDO varchar(100) NULL,
cuit nchar(10) NULL,
DIRECCION nchar(10) NULL
) ON [PRIMARY]
GO

ALTER TABLE dbo.Tmp_CLIENTES SET (LOCK_ESCALATION = TABLE)
GO
IF EXISTS(SELECT * FROM dbo.CLIENTES)
EXEC('INSERT INTO dbo.Tmp_CLIENTES (ID, NOMBRE, cuit, DIRECCION)
SELECT ID, NOMBRE, cuit, DIRECCION FROM dbo.CLIENTES WITH (HOLDLOCK
TABLOCKX)')
GO

DROP TABLE dbo.CLIENTES
GO

EXECUTE sp_rename N'dbo.Tmp_CLIENTES', N'CLIENTES', 'OBJECT'
GO
ALTER TABLE dbo.CLIENTES ADD CONSTRAINT
PK_CLIENTES PRIMARY KEY CLUSTERED
(
ID
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS
= ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

GO
COMMIT




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:##
Mostrar la cita
Ads by Google
Search Busqueda sugerida