Сценарий:
Вие работите като разработчик на SQL Server, вашата компания разполага с база данни с тонове таблици. Всяка таблица има някои колони за одит, като CreatedOn, CreatedBy. За тях никога не са създавани ограничения по подразбиране. Искате да създадете ограничение по подразбиране за колона CreatedOn за цялата таблица със стойност getdate(), също така искате да създадете ограничение по подразбиране за CreatedBy=SUSER_SNAME(). Може да имате друга колона от тип низ и искате да генерирате скриптове за това също.Решение:
Скриптът по-долу може да се използва за генериране на ограничение по подразбиране за дадена колона в цялата база данни за всички таблици. Името на ограничението по подразбиране ще бъде DF_SchemaName_TableName_ColumnName.Нека генерираме скриптове по подразбиране за ограничение за колона CreatedOn със стойност Getdate(), като използваме скрипта по-долу.
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
Генерирайте скриптове за добавяне на ограничение по подразбиране към колона в базата данни в SQL Server |
Трябва само да промените променливите @ColumnName и @DefaultValue според вашите изисквания. Нека използваме същия скрипт, за да добавим ограничение по подразбиране към колона CreatedBy със стойност=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
Как да генерирам скрипт за добавяне на ограничение по подразбиране към колона в базата данни на SQL Server |
Сега нека помислим, че искате да зададете стойност по подразбиране на някаква стойност на низ, тъй като искаме да създадем ограничение по подразбиране за регион column='USA' , Когато зададете стойността на променлива @DefaultValue, добавете единични кавички, както е показано по-долу.
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
Как да генерирате скриптове за добавяне на ограничение по подразбиране към колона в множество таблици в база данни на SQL Server |
Видео демонстрация:Генерирайте скриптове за добавяне на ограничение по подразбиране към колона в множество таблици в база данни на SQL Server