Cenário:
Você está trabalhando como SQL Server Developer, sua empresa tem o banco de dados com toneladas de tabelas. Cada Tabela tem algumas colunas de auditoria, como CreatedOn, CreatedBy. Nenhuma restrição padrão foi criada neles. Você deseja criar a restrição padrão na coluna CreatedOn para toda a tabela com o valor getdate(), também deseja criar a restrição padrão para CreatedBy=SUSER_SNAME(). Você pode ter outra coluna do tipo string e gostaria de gerar scripts para isso também.Solução:
O script abaixo pode ser usado para gerar a restrição padrão para determinada coluna em todo o banco de dados para todas as tabelas. O nome da restrição padrão será DF_SchemaName_TableName_ColumnName.Vamos gerar scripts de restrição padrão para a coluna CreatedOn com o valor Getdate() usando o script abaixo.
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 ![]() |
| Gerar scripts para adicionar restrição padrão à coluna no banco de dados no SQL Server |
Você só precisa fazer alterações nas variáveis @ColumnName e @DefaultValue conforme seus requisitos. Vamos usar o mesmo script para adicionar Default Constraint a CreatedBy Column com 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 ![]() |
| Como gerar script para adicionar restrição padrão na coluna no banco de dados SQL Server |
Agora vamos considerar que você deseja definir o valor padrão para algum valor de string, pois queremos criar uma restrição padrão para a região column='USA' , quando definir o valor da variável @DefaultValue, adicione aspas simples conforme mostrado abaixo.
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 ![]() |
| Como gerar scripts para adicionar restrição padrão na coluna em várias tabelas no banco de dados SQL Server |
Demonstração em vídeo:gere scripts para adicionar restrição padrão à coluna em várias tabelas no banco de dados SQL Server


