Add a column if it doesn't exist to all tables?

前端 未结 4 1290
忘了有多久
忘了有多久 2021-02-05 01:30

I\'m using SQL Server 2005/2008. I need to add a column to a table if it does not yet exist. This will apply to all tables in a given database. I hoped I was close, but I\'m h

4条回答
  •  甜味超标
    2021-02-05 02:30

    You'll need to mix in a bit of dynamic SQL. This should work:

    EXEC sp_MSforeachtable '
        declare @tblname varchar(255);
        SET @tblname =  PARSENAME("?",1);
        declare @sql nvarchar(1000);
    
        if not exists (select column_name from INFORMATION_SCHEMA.columns 
                       where table_name = @tblname and column_name = ''CreatedOn'') 
        begin
            set @sql = N''ALTER TABLE '' +  @tblname + N'' ADD CreatedOn datetime NOT NULL DEFAULT getdate();''
            exec sp_executesql @sql
        end
    '
    

提交回复
热议问题