Scénario :
Vous travaillez dans Auto Insurance Company en tant que développeur SQL Server. Votre entreprise possède une base de données dans laquelle elle contient plus de 300 tables. Lors de la conception initiale, ils ont oublié d'ajouter des colonnes d'audit telles que CreatedBy et CreatedOn. Ils veulent que vous génériez Add Column CreatedBy et CreatedOn pour toutes les tables d'une base de données, comment feriez-vous cela ?Solution :
Il existe de nombreuses façons de générer les instructions SQL pour les exigences ci-dessus, nous allons les garder simples et rapides. Nous utiliserons Select Query pour générer des instructions d'ajout de colonne pour toutes les tables.Générons les scripts de manière à ce que nous devions apporter de très petites modifications à chaque fois et que nous puissions utiliser à tout moment pour ajouter une nouvelle colonne. J'ai déclaré deux variables, @ColumnName et @ColumnDataType. Une fois que nous fournirons les valeurs des variables. La requête Select va vérifier toutes les tables et si la colonne n'existe pas pour la table, elle générera l'instruction 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)
Exécutez la requête ci-dessus et copiez les résultats dans la nouvelle fenêtre de requête, sélectionnez la base de données sur laquelle vous souhaitez exécuter et exécuter.
Comment générer une instruction SQL d'ajout de colonne pour toutes les tables d'une base de données - Tutoriel T-SQL
Démo vidéo :Générer une instruction d'ajout/suppression de colonne pour toutes les tables d'une base de données dans SQL Server