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

SQLServerのデータベース内のすべてのテーブルのAddColumnステートメントを生成する方法-SQLServer/T-SQLチュートリアルパート49

    シナリオ:

    あなたは自動車保険会社でSQLServer開発者として働いています。あなたの会社には、300を超えるテーブルがあるデータベースがあります。初期の設計では、CreatedByやCreatedOnなどの監査列を追加するのを忘れていました。データベース内のすべてのテーブルに対してAddColumnCreatedByとCreatedOnを生成するように求められていますが、どのように実行しますか?

    解決策:

    上記の要件のSQLステートメントを生成する方法はたくさんありますが、これをシンプルかつ迅速に維持します。 Select Queryを使用して、すべてのテーブルのAdd Columnステートメントを生成します。
    スクリプトを生成して、毎回非常に小さな変更を加える必要があり、いつでも新しい列を追加できるようにします。 @ColumnNameと@ColumnDataTypeの2つの変数を宣言しました。変数の値を提供したら。 Selectクエリはすべてのテーブルをチェックし、テーブルに列が存在しない場合は、AddColumnステートメントを生成します。

    --Declare Variables for Column Name and Data Type
    Declare @ColumnName VARCHAR(100)
    Declare @ColumnDataType VARCHAR(50)
    
    --Set the Values for Variables
    SET @ColumnName='CreatedBy'
    SET @ColumnDataType='VARCHAR(50)'
    
    --Run the Query and copy results and paste in new window to run.
    Select 'ALTER Table ['+Table_Schema+'].['+Table_Name+'] '
    +'Add '+@ColumnName+' '+@ColumnDataType AS AddColumnQuery
     from Information_Schema.Tables T
    where T.Table_Type='BASE TABLE'
    And Not exists (
    Select 1 from INFORMATION_SCHEMA.COLUMNS C 
    WHERE C.TABLE_Name=T.Table_Name and Column_Name=@ColumnName)

    上記のクエリを実行し、結果を新しいクエリウィンドウにコピーし、実行および実行するデータベースを選択します。
    データベース内のすべてのテーブルのAddColumnSQLステートメントを生成する方法-T-SQLチュートリアル


    ビデオデモ:SQLServerのデータベース内のすべてのテーブルの列の追加/削除ステートメントを生成する


    1. MySQL、MariaDB、PostgreSQL、MongoDBの運用レポート

    2. ORACLE_HOMEのクローン

    3. SYSDATETIMEOFFSET()SQL Server(T-SQL)の例

    4. 新しいPostgreSQLJSONデータ型内のフィールドを変更するにはどうすればよいですか?