sql >> Databáze >  >> RDS >> Sqlserver

Jak generovat skripty pro přidání výchozích omezení do sloupce ve více tabulkách v databázi SQL Server - SQL Server / Výukový program TSQL část 94

Scénář:

Pracujete jako SQL Server Developer, vaše společnost má databázi se spoustou tabulek. Každá tabulka má nějaké sloupce auditu, jako je CreatedOn, CreatedBy. Nikdy na nich nebyly vytvořeny žádné výchozí omezení. Chcete vytvořit výchozí omezení ve sloupci CreatedOn pro všechny tabulky s hodnotou getdate(), také chcete vytvořit výchozí omezení pro CreatedBy=SUSER_SNAME(). Možná máte jiný sloupec typu string a chtěli byste generovat skripty pro to taky.

Řešení:

Níže uvedený skript lze použít ke generování výchozího omezení pro daný sloupec v celé databázi pro všechny tabulky. Název výchozího omezení bude DF_SchemaName_TableName_ColumnName.
Pojďme vygenerovat skripty výchozího omezení pro sloupec CreatedOn s hodnotou Getdate() pomocí níže uvedeného skriptu.

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
 
 
Generování skriptů pro přidání výchozího omezení do sloupce v databázi na SQL Server
 Musíte pouze změnit proměnné @ColumnName a @DefaultValue podle vašich požadavků. Stejný skript použijeme k přidání výchozího omezení do sloupce CreatedBy s hodnotou=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
 
Jak vygenerovat skript pro přidání výchozího omezení do sloupce v databázi SQL Server
 
Nyní uvažme, že chcete nastavit výchozí hodnotu na nějakou řetězcovou hodnotu, protože chceme vytvořit Výchozí omezení pro sloupec regionu='USA' , Když nastavíte hodnotu proměnné @DefaultValue, přidejte jednoduché uvozovky, jak je uvedeno níže.
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
 
 
Jak vygenerovat skripty pro přidání výchozího omezení do sloupce ve více tabulkách v databázi SQL Server
 
 
Video ukázka:Generování skriptů pro přidání výchozího omezení do sloupce ve více tabulkách v databázi SQL Server


  1. Failover pro PostgreSQL Replication 101

  2. Jak mohu zabít všechny relace připojující se k mé databázi Oracle?

  3. Jaký je nejlepší způsob automatického generování příkazů INSERT pro tabulku serveru SQL?

  4. Vlastní poskytování uživatelských účtů v PostgreSQL prostřednictvím neprivilegovaného anonymního přístupu