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

Como gerar a instrução Add Column para todas as tabelas em um banco de dados no SQL Server - SQL Server / T-SQL Tutorial Part 49

Cenário:

Você está trabalhando na Auto Insurance Company como SQL Server Developer. Sua empresa possui um banco de dados no qual possui mais de 300 Tabelas. No design inicial, eles esqueceram de adicionar colunas de auditoria, como CreatedBy e CreatedOn. Eles querem que você gere Add Column CreatedBy e CreatedOn para todas as tabelas em um banco de dados, como você faria isso?

Solução:

Existem muitas maneiras de gerar as instruções SQL para o requisito acima, vamos mantê-lo simples e rápido. Usaremos Select Query para gerar Add Column Statements para todas as tabelas.
Vamos gerar os scripts de forma que tenhamos que fazer pequenas alterações todas as vezes e possamos usar a qualquer momento para adicionar uma nova coluna. Eu declarei duas variáveis, @ColumnName e @ColumnDataType. Uma vez, forneceremos os valores para as variáveis. A consulta Select irá verificar todas as tabelas e se a coluna não existir para a tabela, ela irá gerar a instrução Add Column.

--Declare Variables for Column Name and Data Type
Declare @ColumnName VARCHAR(100)
Declare @ColumnDataType VARCHAR(50)

--Set the Values for Variables
SET @ColumnName='CreatedBy'
SET @ColumnDataType='VARCHAR(50)'

--Run the Query and copy results and paste in new window to run.
Select 'ALTER Table ['+Table_Schema+'].['+Table_Name+'] '
+'Add '+@ColumnName+' '+@ColumnDataType AS AddColumnQuery
 from Information_Schema.Tables T
where T.Table_Type='BASE TABLE'
And Not exists (
Select 1 from INFORMATION_SCHEMA.COLUMNS C 
WHERE C.TABLE_Name=T.Table_Name and Column_Name=@ColumnName)

Execute a consulta acima e copie os resultados para as novas Janelas de Consulta, selecione o Banco de Dados no qual deseja executar e executar.
Como gerar a instrução SQL Add Column para todas as tabelas em um banco de dados - Tutorial T-SQL


Demonstração de vídeo:Gerar instrução de adicionar/soltar coluna para todas as tabelas em um banco de dados no SQL Server