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

Sådan genererer du tilføje kolonneerklæring for alle tabellerne i en database i SQL Server - SQL Server / T-SQL selvstudium del 49

Scenarie:

Du arbejder i Auto Insurance Company som SQL Server Developer. Din virksomhed har en database, hvori de har mere end 300 tabeller. I det indledende design glemte de at tilføje Audit-kolonner såsom CreatedBy og CreatedOn. De vil have dig til at generere Add Column CreatedBy og CreatedOn for alle tabellerne i en database, hvordan ville du gøre det?

Løsning:

Der er mange måder at generere SQL-sætningerne for ovenstående krav, vi vil holde det enkelt og hurtigt. Vi vil bruge Select Query til at generere Tilføj kolonneudsagn for alle tabellerne.
Lad os generere scripts på en måde, så vi er nødt til at foretage meget små ændringer hver gang, og vi kan bruge når som helst til at tilføje en ny kolonne. Jeg har erklæret to variabler, @ColumnName og @ColumnDataType. Når vi vil give værdierne for variabler. Select-forespørgslen vil kontrollere alle tabellerne, og hvis kolonnen ikke eksisterer for tabellen, vil den generere Add Column-sætning.

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

Kør ovenstående forespørgsel og kopier resultaterne til nye forespørgselsvinduer, vælg den database, som du vil køre og eksekvere på.
Sådan genereres tilføjelseskolonne SQL-sætning for alle tabellerne i en database - T-SQL-vejledning


Videodemo :Generer Tilføj/slip kolonneerklæring for alle tabellerne i en database i SQL Server


  1. Find overlappende datointervaller i PostgreSQL

  2. Forbindelsesstyring i PostgreSQL:En guide

  3. ORA-27154 / ORA-27146

  4. ST_DWithin tager parameter som grad, ikke meter, hvorfor?