Scenariusz:
Pracujesz jako SQL Server Developer, Twoja firma ma bazę danych z tonami tabel. Każda tabela ma kilka kolumn inspekcji, takich jak CreatedOn, CreatedBy. Nigdy nie utworzono na nich żadnych domyślnych wiązań. Chcesz utworzyć domyślne ograniczenie w kolumnie CreatedOn dla całej tabeli z wartością getdate(), a także chcesz utworzyć domyślne ograniczenie dla CreatedBy=SUSER_SNAME().Możesz mieć inną kolumnę typu string i chcesz wygenerować skrypty dla to też.Rozwiązanie:
Poniższy skrypt może posłużyć do wygenerowania Ograniczenia Domyślnego dla danej kolumny w całej bazie danych dla wszystkich tabel. Nazwą domyślnego ograniczenia będzie DF_SchemaName_TableName_ColumnName.Wygenerujmy domyślne skrypty ograniczenia dla kolumny CreatedOn z wartością Getdate() za pomocą poniższego skryptu.
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 ![]() |
| Generuj skrypty, aby dodać domyślne ograniczenie do kolumny w bazie danych w SQL Server |
Musisz tylko wprowadzić zmiany w zmiennych @ColumnName i @DefaultValue zgodnie z wymaganiami. Użyjmy tego samego skryptu, aby dodać domyślne ograniczenie do kolumny CreatedBy z wartością=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 ![]() |
| Jak wygenerować skrypt, aby dodać domyślne ograniczenie w kolumnie w bazie danych SQL Server |
Teraz rozważmy, że chcesz ustawić wartość domyślną na jakąś wartość ciągu, ponieważ chcemy utworzyć Ograniczenie domyślne dla regionu column='USA' , Po ustawieniu wartości zmiennej @DefaultValue dodaj pojedyncze cudzysłowy, jak pokazano poniżej.
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 ![]() |
| Jak generować skrypty, aby dodać domyślne ograniczenie w kolumnie w wielu tabelach w bazie danych SQL Server |
Wideo demonstracyjne:generuj skrypty, aby dodać domyślne ograniczenie do kolumny w wielu tabelach w bazie danych SQL Server


