フィールドサイズを変更する SQL がわからない
同じ名称のフィールドがいくつものテーブルにあるので、ひとつひとつサイズを変更していくのは、ちょっと大変。。。
なので、SQL で一発で何とかしたいなぁと思ったんだけど、どうすればいいのか。
もう少し調べてみる!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
できた><
-- 変数宣言 DECLARE @tbl_name VARCHAR(50) DECLARE @fld_name VARCHAR(50) -- フィールド名設定 SET @fld_name = 'hoge' -- ユーザー定義のテーブルを抽出 DECLARE cursor_name CURSOR FOR SELECT NAME FROM sysobjects WHERE xtype = 'U' ORDER BY NAME OPEN cursor_name FETCH NEXT FROM cursor_name INTO @tbl_name WHILE @@FETCH_STATUS = 0 BEGIN -- 指定フィールドが存在する場合 IF EXISTS( SELECT obj.name , col.name FROM syscolumns AS col INNER JOIN sysobjects AS obj ON col.id = obj.id WHERE obj.type = 'U' AND obj.name = @tbl_name AND col.name = @fld_name ) BEGIN -- プリント PRINT @tbl_name + N' の ' + @fld_name + N' のサイズを 2 から 3 に変更します。' -- 指定フィールドの型を varchar(3) に変更する。 EXEC ('ALTER TABLE ' + @tbl_name + ' ALTER COLUMN ' + @fld_name + ' varchar(3)') -- 列プロパティ(拡張プロパティ)の説明が空白の場合 IF (SELECT ISNULL( (SELECT ex.value FROM sys.extended_properties AS ex WHERE col.id = ex.major_id AND ex.minor_id = col.colid AND ex.name = 'MS_Description' ),'' ) FROM syscolumns AS col INNER JOIN sysobjects AS obj ON col.id = obj.id WHERE obj.name = @tbl_name AND col.name = @fld_name ) = '' BEGIN -- INSERT EXEC sys.sp_addextendedproperty @name = N'MS_Description' , @value = N'2009/01/20 サイズを 2 → 3 に変更' , @level0type=N'SCHEMA' , @level0name=N'dbo' , @level1type = N'TABLE' , @level1name = @tbl_name , @level2type = N'COLUMN' , @level2name = @fld_name; END ELSE BEGIN -- UPDATE EXEC sys.sp_updateextendedproperty @name = N'MS_Description' , @value = N'2009/01/20 サイズを 2 → 3 に変更' , @level0type=N'SCHEMA' , @level0name=N'dbo' , @level1type = N'TABLE' , @level1name = @tbl_name , @level2type = N'COLUMN' , @level2name = @fld_name; END END FETCH NEXT FROM cursor_name INTO @tbl_name END CLOSE cursor_name DEALLOCATE cursor_name
参考ページ
SQLの基本-テーブルの変更(ALTER TABLE):老プログラマーの備忘録:So-netブログ
SQL Server 拡張プロパティについて - アジャイルプログラマの日常
テーブル、列の備考情報を設定、取得する | VB.NETで作る!
カラムの存在チェック - SQL Server 締切済み| 【OKWAVE】
sp_addextendedproperty (TRANSACT-SQL) - SQL Server | Microsoft Docs
sp_updateextendedproperty (TRANSACT-SQL) - SQL Server | Microsoft Docs