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


