Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak generować skrypty, aby dodać domyślne ograniczenia do kolumny w wielu tabelach w bazie danych programu SQL Server — samouczek SQL Server / TSQL, część 94

Scenariusz:

Pracujesz jako SQL Server Developer, Twoja firma ma bazę danych z tonami tabel. Każda tabela ma kilka kolumn inspekcji, takich jak CreatedOn, CreatedBy. Nigdy nie utworzono na nich żadnych domyślnych wiązań. Chcesz utworzyć domyślne ograniczenie w kolumnie CreatedOn dla całej tabeli z wartością getdate(), a także chcesz utworzyć domyślne ograniczenie dla CreatedBy=SUSER_SNAME().Możesz mieć inną kolumnę typu string i chcesz wygenerować skrypty dla to też.

Rozwiązanie:

Poniższy skrypt może posłużyć do wygenerowania Ograniczenia Domyślnego dla danej kolumny w całej bazie danych dla wszystkich tabel. Nazwą domyślnego ograniczenia będzie DF_SchemaName_TableName_ColumnName.
Wygenerujmy domyślne skrypty ograniczenia dla kolumny CreatedOn z wartością Getdate() za pomocą poniższego skryptu.

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
 
 
Generuj skrypty, aby dodać domyślne ograniczenie do kolumny w bazie danych w SQL Server
 Musisz tylko wprowadzić zmiany w zmiennych @ColumnName i @DefaultValue zgodnie z wymaganiami. Użyjmy tego samego skryptu, aby dodać domyślne ograniczenie do kolumny CreatedBy z wartością=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 wygenerować skrypt, aby dodać domyślne ograniczenie w kolumnie w bazie danych SQL Server
 
Teraz rozważmy, że chcesz ustawić wartość domyślną na jakąś wartość ciągu, ponieważ chcemy utworzyć Ograniczenie domyślne dla regionu column='USA' , Po ustawieniu wartości zmiennej @DefaultValue dodaj pojedyncze cudzysłowy, jak pokazano poniżej.
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 generować skrypty, aby dodać domyślne ograniczenie w kolumnie w wielu tabelach w bazie danych SQL Server
 
 
Wideo demonstracyjne:generuj skrypty, aby dodać domyślne ograniczenie do kolumny w wielu tabelach w bazie danych SQL Server


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. T-SQL:Wybieranie kolumny na podstawie MAX (inna kolumna)

  2. Co to jest LEN() w SQL Server?

  3. Jeśli nie określono opcji „Kolejność według”, jaką kolejność wybiera zapytanie dla zestawu rekordów?

  4. SQL MAX wielu kolumn?

  5. TABLOCK vs TABLOCKX