Estoy usando SQL Server 2005/2008. Necesito agregar una columna a una tabla si aún no existe. Esto aplicará a todas las tablas en una base de datos dada. Esperaba estar cerca, pero estoy teniendo problemas con esta solución.¿Agregar una columna si no existe para todas las tablas?
¿Cómo se puede hacer esto?
Esto es lo que tengo:
EXEC sp_MSforeachtable '
declare @tblname varchar(255);
SET @tblname = PARSENAME("?",1);
if not exists (select column_name from INFORMATION_SCHEMA.columns
where table_name = @tblname and column_name = ''CreatedOn'')
begin
ALTER TABLE @tblname ADD CreatedOn datetime NOT NULL DEFAULT getdate();
end
'
pero me da errores:
Error 102: sintaxis incorrecta cerca de '@tblname'. Sintaxis incorrecta cerca de 'CreatedOn'. Sintaxis incorrecta cerca de '@tblname'. Sintaxis incorrecta cerca de 'CreatedOn'. ... y así sucesivamente, para cada tabla.
posible duplicado de http://stackoverflow.com/questions/1779743/adding-a-column- to-all-user-tables-in-t-sql – JAiro
@JAiro: Definitivamente es un enlace relevante, pero la regla "si no existe" es importante y lo hace un poco más complejo. –
ok para que pueda completar la información con esto: http://stackoverflow.com/questions/133031/how-to-check-if-column-exists-in-sql-server-table – JAiro