sql >> Base de Datos >  >> RDS >> Sqlserver

¿Agregar una columna si no existe en todas las tablas?

No puede usar variables, como @tableName, en DDL. Además, dividir el nombre en partes e ignorar el esquema solo puede generar errores. Solo debe usar el reemplazo ''?'' en el parámetro de lote de SQL y confiar en MSforeachtable reemplazo:

EXEC sp_MSforeachtable '
if not exists (select * from sys.columns 
               where object_id = object_id(''?'')
               and name = ''CreatedOn'') 
begin
    ALTER TABLE ? ADD CreatedOn datetime NOT NULL DEFAULT getdate();
end';