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