Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come generare script per aggiungere vincoli predefiniti alla colonna in più tabelle nel database di SQL Server - Tutorial SQL Server / TSQL Parte 94

Scenario:

Lavori come sviluppatore SQL Server, la tua azienda ha il database con tonnellate di tabelle. Ogni tabella ha alcune colonne di controllo come CreatedOn, CreatedBy. Nessun vincolo predefinito è mai stato creato su di essi. Vuoi creare il vincolo predefinito sulla colonna CreatedOn per tutte le tabelle con valore getdate(), inoltre vuoi creare il vincolo predefinito per CreatedBy=SUSER_SNAME(). Potresti avere un'altra colonna di tipo string e vorresti generare script per anche quello.

Soluzione:

Lo script seguente può essere utilizzato per generare il vincolo predefinito per una determinata colonna nell'intero database per tutte le tabelle. Il nome per il vincolo predefinito sarà DF_SchemaName_TableName_ColumnName.
Generiamo script di vincolo predefinito per la colonna CreatedOn con il valore Getdate() utilizzando lo script sottostante.

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
 
 
Genera script per aggiungere un vincolo predefinito alla colonna nel database in SQL Server
 Devi solo modificare le variabili @ColumnName e @DefaultValue secondo le tue esigenze. Usiamo lo stesso script per aggiungere il vincolo predefinito alla colonna CreatedBy con valore=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
 
Come generare uno script per aggiungere il vincolo predefinito sulla colonna nel database di SQL Server
 
Ora consideriamo che si desidera impostare il valore predefinito su un valore stringa poiché si desidera creare un vincolo predefinito per la regione column='USA' , Quando si imposta il valore della variabile @DefaultValue, aggiungere virgolette singole come mostrato di seguito.
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
 
 
Come generare script per aggiungere il vincolo predefinito su una colonna in più tabelle nel database di SQL Server
 
 
Video demo:genera script per aggiungere un vincolo predefinito alla colonna in più tabelle nel database di SQL Server