Scenario:
Du arbetar som SQL Server-utvecklare, ditt företag har databasen med massor av tabeller. Varje tabell har några granskningskolumner som CreatedOn, CreatedBy. Inga standardbegränsningar har någonsin skapats på dem. Du vill skapa standardbegränsningen på CreatedOn-kolumnen för alla tabeller med värdet getdate(), du vill också skapa standardbegränsningen för CreatedBy=SUSER_SNAME(). Du kan ha en annan kolumn av typen sträng och du vill skapa skript för det också.Lösning:
Skriptet nedan kan användas för att generera standardbegränsning för en given kolumn i hela databasen för alla tabeller. Namnet för Standard Constraint kommer att vara DF_SchemaName_TableName_ColumnName.Låt oss generera Default Constraint-skript för CreatedOn-kolumnen med värdet Getdate() genom att använda nedanstående skript.
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
Generera skript för att lägga till standardbegränsning till kolumn i databas i SQL Server |
Du behöver bara ändra variablerna @ColumnName och @DefaultValue enligt dina krav. Låt oss använda samma skript för att lägga till Default Constraint till CreatedBy Column med value=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
Hur man genererar skript för att lägga till standardbegränsning på kolumn i SQL Server Database |
Låt oss nu överväga att du vill ställa in standardvärde till något strängvärde eftersom vi vill skapa Default Constraint for Region column='USA' , När du ställer in värdet för @DefaultValue variabel, lägg till enstaka citattecken som visas nedan.
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
Hur man genererar skript för att lägga till standardbegränsning på kolumn i flera tabeller i SQL Server Database |
Videodemo :Generera skript för att lägga till standardbegränsning till kolumn i flera tabeller i SQL Server-databasen