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