Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Ajouter une colonne si elle n'existe pas dans toutes les tables ?

Vous ne pouvez pas utiliser de variables, comme @tableName, dans DDL. De plus, diviser le nom en plusieurs parties et ignorer le schéma ne peut qu'entraîner des bogues. Vous devez simplement utiliser le remplacement ''?'' dans le paramètre batch SQL et compter sur le MSforeachtable remplacement :

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';