制約付きカラムを削除する
SQL Serverで自動生成される制約名は、
DF__{テーブル名}__{カラム名}__{自動生成文字列}
のようになっていて、DROP/CREATEのたびに変わってしまう。
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 削除したいカラムSQL SERVERでDEFAULT等、制約付きのカラムを削除する - メモス\(^o^)/