SQL SERVERでDEFAULT等、制約付きのカラムを削除する
DEFAULT制約等が付いていると、そのままカラムを削除出来ない
まずは制約を削除してからカラムを削除しなければならない
制約をSQLで削除するのは少し手間がかかる
DECLARE @TABLE_NAME NVARCHAR(256) DECLARE @COLUMN_NAME NVARCHAR(256) DECLARE @TABLE_ID INTEGER DECLARE @COLUMN_ID INTEGER DECLARE @CONSTRAINT_NAME NVARCHAR(256) SET @TABLE_NAME = '削除したいテーブル' SET @COLUMN_NAME = '削除したいカラム' --削除したいテーブルのシステムidを取得する SELECT @TABLE_ID = id FROM sys.sysobjects WHERE xtype = 'U' AND name = @TABLE_NAME --削除したいカラムのシステムidを取得する SELECT @COLUMN_ID = column_id FROM sys.columns WHERE object_id = @TABLE_ID AND name = @COLUMN_NAME --削除したい制約名を取得する SELECT @CONSTRAINT_NAME = name FROM sys.sysobjects WHERE id = (SELECT constid FROM sys.sysconstraints WHERE id = @TABLE_ID AND colid = @COLUMN_ID) --制約を削除する EXEC('ALTER TABLE '+ @TABLE_NAME + ' DROP CONSTRAINT ' + @CONSTRAINT_NAME) --カラムを削除する ALTER TABLE 削除したいテーブル DROP COLUMN 削除したいカラム
制約を削除する時、変数でそのまま実行出来ない
EXECを使い動的にSQL生成して実行しないといけない