sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man genererar skript för att lägga till standardbegränsningar till kolumn i flera tabeller i SQL Server-databasen - SQL Server / TSQL självstudie del 94

Scenario:

Du arbetar som SQL Server-utvecklare, ditt företag har databasen med massor av tabeller. Varje tabell har några granskningskolumner som CreatedOn, CreatedBy. Inga standardbegränsningar har någonsin skapats på dem. Du vill skapa standardbegränsningen på CreatedOn-kolumnen för alla tabeller med värdet getdate(), du vill också skapa standardbegränsningen för CreatedBy=SUSER_SNAME(). Du kan ha en annan kolumn av typen sträng och du vill skapa skript för det också.

Lösning:

Skriptet nedan kan användas för att generera standardbegränsning för en given kolumn i hela databasen för alla tabeller. Namnet för Standard Constraint kommer att vara DF_SchemaName_TableName_ColumnName.
Låt oss generera Default Constraint-skript för CreatedOn-kolumnen med värdet Getdate() genom att använda nedanstående skript.

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
 
 
Generera skript för att lägga till standardbegränsning till kolumn i databas i SQL Server
 Du behöver bara ändra variablerna @ColumnName och @DefaultValue enligt dina krav. Låt oss använda samma skript för att lägga till Default Constraint till CreatedBy Column med 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
 
Hur man genererar skript för att lägga till standardbegränsning på kolumn i SQL Server Database
 
Låt oss nu överväga att du vill ställa in standardvärde till något strängvärde eftersom vi vill skapa Default Constraint for Region column='USA' , När du ställer in värdet för @DefaultValue variabel, lägg till enstaka citattecken som visas nedan.
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
 
 
Hur man genererar skript för att lägga till standardbegränsning på kolumn i flera tabeller i SQL Server Database
 
 
Videodemo :Generera skript för att lägga till standardbegränsning till kolumn i flera tabeller i SQL Server-databasen


  1. Hur använder jag lösenordshashning med PDO för att göra min kod säkrare?

  2. använda nollor i ett mysqli-förberedt uttalande

  3. Få alla överordnade rader i en SQL-fråga

  4. GREATEST() Funktion i Oracle