sql >> データベース >  >> RDS >> Sqlserver

SQLServerデータベースの複数のテーブルの列にデフォルトの制約を追加するスクリプトを生成する方法-SQLServer/TSQLチュートリアルパート94

    シナリオ:

    あなたはSQLServer開発者として働いています。あなたの会社には、大量のテーブルを含むデータベースがあります。各テーブルには、CreatedOn、CreatedByなどの監査列があります。デフォルトの制約は作成されていません。 getdate()の値を持つすべてのテーブルのCreatedOn列にデフォルトの制約を作成し、CreatedBy =SUSER_SNAME()のデフォルトの制約を作成します。string型の別の列があり、次のスクリプトを生成したい場合があります。それも。

    解決策:

    以下のスクリプトを使用して、すべてのテーブルのデータベース全体の特定の列のデフォルト制約を生成できます。デフォルト制約の名前はDF_SchemaName_TableName_ColumnNameになります。
    以下のスクリプトを使用して、値Getdate()でCreatedOn列のデフォルト制約スクリプトを生成しましょう。

    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
     
     
    SQLServerのデータベースの列にデフォルトの制約を追加するスクリプトを生成する
     要件に応じて、@ColumnName変数と@DefaultValue変数のみを変更する必要があります。同じスクリプトを使用して、value =SUSER_SNAME()のCreatedBy列にデフォルトの制約を追加しましょう。
    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
     
    SQLServerデータベースの列にデフォルトの制約を追加するスクリプトを生成する方法
     
    ここで、Region 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
     
     
    SQLServerデータベースの複数のテーブルの列にデフォルトの制約を追加するスクリプトを生成する方法
     
      
    ビデオデモ:SQLServerデータベースの複数のテーブルの列にデフォルトの制約を追加するスクリプトを生成する


    1. SQL Serverで文字列のすべての出現箇所を別の文字列に置き換える方法– REPLACE()

    2. R12.2エディションの決定とセットアップ

    3. SQLiteConnectionオブジェクトのリークを防ぐことができません

    4. Postgresql COPY TO STDIN with CSVは、競合時にどのように更新しますか?