シナリオ:
あなたは自動車保険会社で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のデータベース内のすべてのテーブルの列の追加/削除ステートメントを生成する