Scenario:
U werkt als SQL Server Developer, uw bedrijf heeft de database met tonnen tabellen. Elke tabel heeft enkele controlekolommen, zoals CreatedOn, CreatedBy. Er zijn nooit standaardbeperkingen voor gemaakt. U wilt de standaardbeperking op CreatedOn-kolommen maken voor alle tabellen met de waarde getdate(), en u wilt ook een standaardbeperking maken voor CreatedBy=SUSER_SNAME(). Mogelijk hebt u een andere kolom van het type string en wilt u scripts genereren voor dat ook.Oplossing:
Het onderstaande script kan worden gebruikt om de standaardbeperking voor een bepaalde kolom in de volledige database voor alle tabellen te genereren. De naam voor Default Constraint is DF_SchemaName_TableName_ColumnName.Laten we Default Constraint-scripts genereren voor de kolom CreatedOn met de waarde Getdate() door onderstaand script te gebruiken.
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 ![]() |
| Scripts genereren om standaardbeperkingen toe te voegen aan kolom in database in SQL Server |
U hoeft alleen de variabelen @ColumnName en @DefaultValue te wijzigen volgens uw vereisten. Laten we hetzelfde script gebruiken om Default Constraint aan CreatedBy Column toe te voegen met 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 ![]() |
| Script genereren om standaardbeperking toe te voegen aan kolom in SQL Server-database |
Laten we nu eens overwegen dat u de standaardwaarde wilt instellen op een tekenreekswaarde, omdat we een standaardbeperking voor regio column='USA' willen maken. Wanneer u de waarde van de @DefaultValue-variabele instelt, voegt u enkele aanhalingstekens toe zoals hieronder wordt weergegeven.
br />
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 ![]() |
| Scripts genereren om standaardbeperkingen toe te voegen aan kolommen in meerdere tabellen in SQL Server-database |
Videodemo:scripts genereren om standaardbeperkingen toe te voegen aan kolommen in meerdere tabellen in SQL Server-database


