Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Adicionar uma coluna se ela não existir em todas as tabelas?


Você não pode usar variáveis, como @tableName, em DDL. Além disso, dividir o nome em partes e ignorar o esquema só pode resultar em bugs. Você deve apenas usar a substituição ''?'' no parâmetro de lote SQL e confiar no MSforeachtable substituição:
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';