Scenarie:
Du arbejder som SQL Server Developer, din virksomhed har databasen med tonsvis af tabeller. Hver tabel har nogle revisionskolonner såsom CreatedOn, CreatedBy. Der blev aldrig oprettet nogen standardbegrænsninger på dem. Du vil oprette standardbegrænsningen på CreatedOn-kolonnen for alle tabellen med værdien getdate(), også du vil oprette standardbegrænsningen for CreatedBy=SUSER_SNAME(). Du har muligvis en anden kolonne af typen streng, og du vil gerne generere scripts til det også.Løsning:
Nedenstående script kan bruges til at generere standardbegrænsning for en given kolonne i hele databasen for alle tabellerne. Navnet på Standard Constraint vil være DF_SchemaName_TableName_ColumnName.Lad os generere Standard Constraint scripts for CreatedOn kolonne med værdien Getdate() ved at bruge nedenstående script.
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+']' +' Add Constraint DF_'+Schema_Name(schema_id) +'_'+t.name +'_'+c.name+'' +' default '+@DefaultValue+' for ' + @ColumnName as CreateDefaultConstraint from sys.tables t inner join sys.columns c on t.object_id=c.object_id and t.is_ms_shipped=0 and c.name=@ColumnName
Generer scripts for at tilføje standardbegrænsning til kolonne i database i SQL Server |
Du skal kun foretage ændringer til @ColumnName og @DefaultValue variabler i henhold til dine krav. Lad os bruge det samme script til at tilføje Default Constraint til CreatedBy Column med værdi=SUSER_SNAME().
Declare @ColumnName VARCHAR(128) Declare @DefaultValue VARCHAR(100) SET @ColumnName='CreatedBy' SET @DefaultValue='SUSER_SNAME()' Select Schema_Name(Schema_id) as SchemaName, t.Name as TableName, C.Name as ColumnName, 'Alter Table ['+Schema_Name(Schema_id) +'].['+t.Name+']' +' Add Constraint DF_'+Schema_Name(schema_id) +'_'+t.name +'_'+c.name+'' +' default '+@DefaultValue+' for ' + @ColumnName as CreateDefaultConstraint from sys.tables t inner join sys.columns c on t.object_id=c.object_id and t.is_ms_shipped=0 and c.name=@ColumnName
Sådan genereres script for at tilføje standardbegrænsning på kolonne i SQL Server-database |
Lad os nu overveje, at du vil indstille standardværdien til en strengværdi, da vi ønsker at oprette Standard Constraint for Region column='USA'. Når du indstiller værdien for @DefaultValue variabel, skal du tilføje enkelte anførselstegn som vist nedenfor.
Declare @ColumnName VARCHAR(128) Declare @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+']' +' Add Constraint DF_'+Schema_Name(schema_id) +'_'+t.name +'_'+c.name+'' +' default '+@DefaultValue+' for ' + @ColumnName as CreateDefaultConstraint from sys.tables t inner join sys.columns c on t.object_id=c.object_id and t.is_ms_shipped=0 and c.name=@ColumnName
Sådan genereres scripts for at tilføje standardbegrænsning på kolonne i flere tabeller i SQL Server-database |
Videodemo:Generer scripts for at tilføje standardbegrænsning til kolonne i flere tabeller i SQL Server-database