sql >> Database >  >> RDS >> Sqlserver

Hoe u een kolomverklaring voor alle tabellen in een database in SQL Server kunt genereren - SQL Server / T-SQL-zelfstudie, deel 49

Scenario:

Je werkt bij Auto Insurance Company als SQL Server Developer. Uw bedrijf heeft een database waarin ze meer dan 300 tabellen hebben. In het eerste ontwerp waren ze vergeten om Audit-kolommen toe te voegen, zoals CreatedBy en CreatedOn. Ze willen dat je 'Add Column CreatedBy' en 'CreatedOn' genereert voor alle tabellen in een database. Hoe zou je dat doen?

Oplossing:

Er zijn veel manieren om de SQL-statements voor bovenstaande vereisten te genereren, we gaan het eenvoudig en snel houden. We zullen Select Query gebruiken om kolomverklaringen voor alle tabellen te genereren.
Laten we de scripts zo genereren dat we elke keer heel kleine wijzigingen moeten aanbrengen en we op elk moment kunnen gebruiken om een ​​nieuwe kolom toe te voegen. Ik heb twee variabelen gedeclareerd, @ColumnName en @ColumnDataType. Zodra we de waarden voor variabelen zullen geven. De Select-query gaat alle tabellen controleren en als de kolom niet bestaat voor de tabel, wordt de instructie Kolom toevoegen gegenereerd.

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

Voer bovenstaande query uit en kopieer de resultaten naar nieuwe Query Windows, selecteer de database waarop u wilt uitvoeren en uitvoeren.
Hoe u een SQL-instructie voor kolommen toevoegt voor alle tabellen in een database - T-SQL-zelfstudie


Videodemo:Genereer een kolomverklaring voor toevoegen/verwijderen voor alle tabellen in een database in SQL Server


  1. OracleException (0x80004005) bij verbinding met Oracle Database

  2. Gemeenschappelijke tabeluitdrukking, waarom puntkomma?

  3. Wat is het verwachte gedrag voor meerdere set-retourfuncties in de SELECT-component?

  4. Kolomwaarden omwisselen in MySQL