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

TSQL-データベース内のすべてのテーブルに列を追加する[カーソルの例]

    シナリオ:

    データベース内のすべてのテーブルに列を追加する必要がある場合があります。今日、CreatedOn列がまだテーブルに存在しない場合は、すべてのテーブルに追加する必要があります。

    解決策:

    この操作を実行するためにカーソルを使用します。
    これらの変数の列名とデータ型を指定してください。以下の例では、DateTimeデータ型のCreatedOn列を追加しています。

    SET @COLUMN_NAME='ColumnNameYouWantToAdd'
    SET @COLUMN_DATATYPE='DataTypeOfColumn'

    ---------------------------------------------- - コード - - - - - - - - - - - - - - - - - - - - - - - - ----
    USE TESTDB
    GO
    --Declare Variables
    DECLARE @TableName VARCHAR(100)
    DECLARE @TableSchema VARCHAR(100)
    DECLARE @COLUMN_NAME VARCHAR(50)
    SET @COLUMN_NAME='CreatedOn' -- Change Column Name according to your requirement
    DECLARE @COLUMN_DATATYPE VARCHAR(50)
    SET @COLUMN_DATATYPE='DateTime' -- Provide data type for column
    
    --Declare Cursor
    DECLARE CUR CURSOR FOR
      SELECT TABLE_SCHEMA,
             TABLE_NAME
      FROM   INFORMATION_SCHEMA.TABLES
      WHERE  TABLE_TYPE = 'BASE TABLE'
    --OPEN CURSOR
    OPEN CUR
    --Fetch First Row
    FETCH NEXT FROM CUR INTO @TableSchema,@TableName
    --Loop
    WHILE @@FETCH_STATUS = 0
      BEGIN
    
      DECLARE @SQL NVARCHAR(MAX)
      SET @SQL=NULL
      IF NOT EXISTS ( SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS 
           WHERE TABLE_NAME=@TableName AND COLUMN_NAME=@COLUMN_NAME 
    and Table_Schema=@TableSchema)
      BEGIN
      SET @SQL='ALTER TABLE '+@TableSchema+'.'+@TableName +' ADD '+@COLUMN_NAME
                             + ' '+@COLUMN_DATATYPE
        PRINT @SQL
        EXEC ( @SQL)
      END
       
      IF EXISTS ( SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS 
           WHERE TABLE_NAME=@TableName AND COLUMN_NAME=@COLUMN_NAME 
    and Table_Schema=@TableSchema)
      BEGIN
      PRINT 'Column Already exists in Table'
      END
          FETCH NEXT FROM CUR INTO @TableSchema,@TableName
      END
    --Close and Deallocate Cursor
    CLOSE CUR
    DEALLOCATE CUR
     
     
     
    Video Demo: How to Add Column to all the Tables in SQL Server Database (Cursor Example)
     
     

    1. mysqliの最後の挿入ID

    2. alembicutilコマンドエラーで識別子が見つかりません

    3. CakePHP2.0でのOracleデータベースの使用

    4. リアルタイムの運用分析と非クラスター化列ストアインデックス