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

Sådan genereres scripts for at føje standardbegrænsninger til kolonne i flere tabeller i SQL Server-database - SQL Server / TSQL vejledning del 94

Scenarie:

Du arbejder som SQL Server Developer, din virksomhed har databasen med tonsvis af tabeller. Hver tabel har nogle revisionskolonner såsom CreatedOn, CreatedBy. Der blev aldrig oprettet nogen standardbegrænsninger på dem. Du vil oprette standardbegrænsningen på CreatedOn-kolonnen for alle tabellen med værdien getdate(), også du vil oprette standardbegrænsningen for CreatedBy=SUSER_SNAME(). Du har muligvis en anden kolonne af typen streng, og du vil gerne generere scripts til det også.

Løsning:

Nedenstående script kan bruges til at generere standardbegrænsning for en given kolonne i hele databasen for alle tabellerne. Navnet på Standard Constraint vil være DF_SchemaName_TableName_ColumnName.
Lad os generere Standard Constraint scripts for CreatedOn kolonne med værdien Getdate() ved at bruge nedenstående script.

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
 
 
Generer scripts for at tilføje standardbegrænsning til kolonne i database i SQL Server
 Du skal kun foretage ændringer til @ColumnName og @DefaultValue variabler i henhold til dine krav. Lad os bruge det samme script til at tilføje Default Constraint til CreatedBy Column med værdi=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
 
Sådan genereres script for at tilføje standardbegrænsning på kolonne i SQL Server-database
 
Lad os nu overveje, at du vil indstille standardværdien til en strengværdi, da vi ønsker at oprette Standard Constraint for Region column='USA'. Når du indstiller værdien for @DefaultValue variabel, skal du tilføje enkelte anførselstegn som vist nedenfor.
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
 
 
Sådan genereres scripts for at tilføje standardbegrænsning på kolonne i flere tabeller i SQL Server-database
 
 
Videodemo:Generer scripts for at tilføje standardbegrænsning til kolonne i flere tabeller i SQL Server-database


  1. Introduktion til SQL

  2. Sådan opretter du en MySQL-database og indstiller privilegier

  3. NVL2() Funktion i Oracle

  4. Hvordan kører man den samme forespørgsel på alle databaser på en instans?