Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да генерирате скриптове за добавяне на ограничения по подразбиране към колона в множество таблици в база данни на SQL Server - SQL Server / TSQL Урок, част 94

Сценарий:

Вие работите като разработчик на SQL Server, вашата компания разполага с база данни с тонове таблици. Всяка таблица има някои колони за одит, като CreatedOn, CreatedBy. За тях никога не са създавани ограничения по подразбиране. Искате да създадете ограничение по подразбиране за колона CreatedOn за цялата таблица със стойност getdate(), също така искате да създадете ограничение по подразбиране за CreatedBy=SUSER_SNAME(). Може да имате друга колона от тип низ и искате да генерирате скриптове за това също.

Решение:

Скриптът по-долу може да се използва за генериране на ограничение по подразбиране за дадена колона в цялата база данни за всички таблици. Името на ограничението по подразбиране ще бъде DF_SchemaName_TableName_ColumnName.
Нека генерираме скриптове по подразбиране за ограничение за колона CreatedOn със стойност Getdate(), като използваме скрипта по-долу.

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
 
 
Генерирайте скриптове за добавяне на ограничение по подразбиране към колона в базата данни в SQL Server
 Трябва само да промените променливите @ColumnName и @DefaultValue според вашите изисквания. Нека използваме същия скрипт, за да добавим ограничение по подразбиране към колона CreatedBy със стойност=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
 
Как да генерирам скрипт за добавяне на ограничение по подразбиране към колона в базата данни на SQL Server
 
Сега нека помислим, че искате да зададете стойност по подразбиране на някаква стойност на низ, тъй като искаме да създадем ограничение по подразбиране за регион column='USA' , Когато зададете стойността на променлива @DefaultValue, добавете единични кавички, както е показано по-долу.
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
 
 
Как да генерирате скриптове за добавяне на ограничение по подразбиране към колона в множество таблици в база данни на SQL Server
 
 
Видео демонстрация:Генерирайте скриптове за добавяне на ограничение по подразбиране към колона в множество таблици в база данни на 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. Поддръжка на системни бази данни на SQL Server

  2. поръчка чрез newid() - как работи?

  3. CEILING() Примери в SQL Server

  4. Как да разположите приложение с база данни на sql сървър на клиенти

  5. Какво представляват заключване на редове, страници и таблица? И кога се придобиват?