sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo generar secuencias de comandos para agregar restricciones predeterminadas a la columna en varias tablas en la base de datos de SQL Server - Tutorial de SQL Server / TSQL, parte 94

Escenario:

Está trabajando como desarrollador de SQL Server, su empresa tiene la base de datos con toneladas de tablas. Cada tabla tiene algunas columnas de auditoría, como Creado el, Creado por. Nunca se crearon restricciones predeterminadas en ellos. Desea crear la Restricción predeterminada en la columna CreatedOn para toda la tabla con el valor getdate(), también desea crear la Restricción predeterminada para CreatedBy=SUSER_SNAME(). Es posible que tenga otra columna de tipo cadena y le gustaría generar scripts para eso también.

Solución:

El siguiente script se puede usar para generar una restricción predeterminada para una columna determinada en toda la base de datos para todas las tablas. El nombre de la Restricción predeterminada será DF_SchemaName_TableName_ColumnName.
Vamos a generar secuencias de comandos de Restricción predeterminada para la columna Creado en con el valor Getdate() utilizando la siguiente secuencia de comandos.

Declare @ColumnName VARCHAR(128)Declare @DefaultValue VARCHAR(100)SET @ColumnName='CreatedON'SET @DefaultValue='Getdate()'Seleccione Schema_Name(Schema_id) como SchemaName,t.Name como TableName,C.Name como ColumnName,'Alter Table ['+Schema_Name( Schema_id)+'].['+t.Name+']'+' Añadir restricción DF_'+Schema_Name(schema_id) +'_'+t.name +'_'+c.name+'' +' default '+@ DefaultValue+' for ' + @ColumnName as CreateDefaultConstraint from sys.tables tinner join sys.columns con t.object_id=c.object_idand t.is_ms_shipped=0and c.name=@ColumnName
 
 
Generar secuencias de comandos para agregar restricciones predeterminadas a la columna en la base de datos en SQL Server
 Solo tiene que realizar cambios en las variables @ColumnName y @DefaultValue según sus requisitos. Usemos la misma secuencia de comandos para agregar Restricción predeterminada a la columna Creado por con valor =SUSER_SNAME (). ='SUSER_SNAME()'Seleccione Schema_Name(Schema_id) as SchemaName,t.Name as TableName,C.Name as ColumnName,'Alter Table ['+Schema_Name(Schema_id)+'].['+t.Name+']'+ ' Añadir restricción DF_'+Schema_Name(schema_id) +'_'+t.name +'_'+c.name+'' +' default '+@DefaultValue+' for ' + @ColumnName as CreateDefaultConstraintfrom sys.tables tinner join sys. columnas con t.object_id=c.object_idand t.is_ms_shipped=0and c.name=@ColumnName 
 
Cómo generar un script para agregar una restricción predeterminada en la columna en la base de datos de SQL Server
 
Ahora, consideremos que desea establecer un valor predeterminado en algún valor de cadena, ya que queremos crear una Restricción predeterminada para la región column='USA' . Cuando establezca el valor de la variable @DefaultValue, agregue comillas simples como se muestra a continuación.
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+']'+' Agregar restricción DF_'+Schema_Name(schema_id) +'_'+t.name +'_'+c.name+'' +' default '+@DefaultValue+' for ' + @ColumnName as CreateDefaultConstraintfrom sys.tables tinner join sys.columns con t.object_id=c.object_idand t.is_ms_shipped=0and c.name=@NombreColumna
 
 
Cómo generar secuencias de comandos para agregar restricciones predeterminadas en la columna en varias tablas en la base de datos de SQL Server
 
 
Video de demostración:genere secuencias de comandos para agregar restricciones predeterminadas a la columna en varias tablas en la base de datos de SQL Server