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

Come generare un'istruzione Aggiungi colonna per tutte le tabelle in un database in SQL Server - Tutorial SQL Server / T-SQL Parte 49

Scenario:

Lavori in Auto Insurance Company come sviluppatore di SQL Server. La tua azienda ha un database in cui hanno più di 300 tabelle. Nella progettazione iniziale, si sono dimenticati di aggiungere colonne Audit come CreatedBy e CreatedOn. Vogliono che tu generi Aggiungi colonna CreatedBy e CreatedOn per tutte le tabelle in un database, come lo faresti?

Soluzione:

Esistono molti modi per generare le istruzioni SQL per i requisiti di cui sopra, lo manterremo semplice e veloce. Utilizzeremo Seleziona query per generare istruzioni Aggiungi colonna per tutte le tabelle.
Generiamo gli script in modo da dover apportare modifiche molto piccole ogni volta e da poter utilizzare in qualsiasi momento per aggiungere una nuova colonna. Ho dichiarato due variabili, @ColumnName e @ColumnDataType. Una volta forniremo i valori per le variabili. La query Seleziona controllerà tutte le tabelle e, se la colonna non esiste per la tabella, genererà l'istruzione Aggiungi colonna.

--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)

Esegui la query precedente e copia i risultati nelle nuove finestre di query, seleziona il database su cui desideri eseguire ed eseguire.
Come generare un'istruzione SQL per l'aggiunta di colonne per tutte le tabelle in un database - Tutorial T-SQL


Video demo:genera un'istruzione di colonna Aggiungi/elimina per tutte le tabelle in un database in SQL Server