Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Aggiungere una colonna se non esiste a tutte le tabelle?

Non è possibile utilizzare variabili, come @tableName, in DDL. Inoltre, dividere il nome in una parte e ignorare lo schema può solo causare bug. Dovresti semplicemente usare la sostituzione ''?'' nel parametro batch SQL e fare affidamento su MSforeachtable sostituzione:

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