Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment générer des scripts pour ajouter des contraintes par défaut à la colonne dans plusieurs tables dans la base de données SQL Server - Tutoriel SQL Server / TSQL Partie 94

Scénario :

Vous travaillez en tant que développeur SQL Server, votre entreprise a la base de données avec des tonnes de tables. Chaque table comporte des colonnes d'audit telles que CreatedOn, CreatedBy. Aucune contrainte par défaut n'a jamais été créée sur eux. Vous souhaitez créer la contrainte par défaut sur la colonne CreatedOn pour toute la table avec la valeur getdate(), vous souhaitez également créer une contrainte par défaut pour CreatedBy=SUSER_SNAME(). Vous pouvez avoir une autre colonne de type chaîne et vous souhaitez générer des scripts pour ça aussi.

Solution :

Le script ci-dessous peut être utilisé pour générer une contrainte par défaut pour une colonne donnée dans toute la base de données pour toutes les tables. Le nom de la contrainte par défaut sera DF_SchemaName_TableName_ColumnName.
Générons des scripts de contrainte par défaut pour la colonne CreatedOn avec la valeur Getdate() en utilisant le script ci-dessous.

Declare @ColumnName VARCHAR(128)Declare @DefaultValue VARCHAR(100)SET @ColumnName='CreatedON'SET @DefaultValue='Getdate()'Select Schema_Name(Schema_id) as SchemaName,t.Name as TableName,C.Name as ColumnName,'Alter Table ['+Schema_Name( Schema_id)+'].['+t.Name+']'+' Ajouter une contrainte DF_'+Schema_Name(schema_id) +'_'+t.name +'_'+c.name+'' +' default '+@ DefaultValue+' for ' + @ColumnName as CreateDefaultConstraintfrom sys.tables tinner join sys.columns con t.object_id=c.object_idand t.is_ms_shipped=0and c.name=@ColumnName
 
 
Générer des scripts pour ajouter une contrainte par défaut à la colonne dans la base de données dans SQL Server
 Vous n'avez qu'à modifier les variables @ColumnName et @DefaultValue selon vos besoins. Utilisons le même script pour ajouter une contrainte par défaut à la colonne CreatedBy avec la valeur=SUSER_SNAME().
Declare @ColumnName VARCHAR(128)Declare @DefaultValue VARCHAR(100)SET @ColumnName='CreatedBy'SET @DefaultValue ='SUSER_SNAME()'Sélectionner Schema_Name(Schema_id) comme SchemaName,t.Name comme TableName,C.Name comme ColumnName,'Alter Table ['+Schema_Name(Schema_id)+'].['+t.Name+']'+ ' Ajouter une contrainte DF_'+Schema_Name(schema_id) +'_'+t.name +'_'+c.name+'' +' default '+@DefaultValue+' for ' + @ColumnName as CreateDefaultConstraintfrom sys.tables tinner join sys. colonnes con t.object_id=c.object_idand t.is_ms_shipped=0and c.name=@ColumnName
 
Comment générer un script pour ajouter une contrainte par défaut sur la colonne dans la base de données SQL Server
 
Considérons maintenant que vous souhaitez définir la valeur par défaut sur une valeur de chaîne car nous voulons créer une contrainte par défaut pour la région column='USA' , Lorsque vous définissez la valeur de la variable @DefaultValue, ajoutez des guillemets simples comme indiqué ci-dessous.
Déclarer @ColumnName VARCHAR(128)Déclarer @DefaultValue VARCHAR(100)SET @ColumnName='Region'SET @DefaultValue='''USA'''Select Schema_Name(Schema_id) as SchemaName,t.Name as TableName,C.Name as ColumnName,'Alter Table ['+Schema_Name(Schema_id)+'].['+t.Name+']'+' Ajouter une contrainte DF_'+Schema_Name(schema_id) +'_'+t.name +'_'+c.name+'' +' default '+@DefaultValue+' for ' + @ColumnName as CreateDefaultConstraintfrom sys.tables tinner join sys.columns con t.object_id=c.object_idand t.is_ms_shipped=0and c.name=@ColumnName
 
 
Comment générer des scripts pour ajouter une contrainte par défaut sur la colonne dans plusieurs tables dans la base de données SQL Server
 
 
Démo vidéo :générer des scripts pour ajouter une contrainte par défaut à la colonne dans plusieurs tables dans la base de données SQL Server