【SQL Server】DEFAULT制約が設定された列の型をSQL(CUI)で変更しようとする、とエラーが発生する

結論

1.以下を実行するとエラーが発生する。
・DEFAULT制約が設定された列の型を
・VARCHARからNVARCHARへ ※逆もしかり。左記の文字列型からINT型への変更もエラー発生
・SQL(CUI)で変更

2.SSMSのデザイナ(GUI)だとエラーは発生せず変更できる。
 もしくは一時的に制約を削除してから変更し、その後SQL(CUI)で制約を再設定する。

検証(準備)

1.確認用のテーブル「Employee」を作成及び確認
 ┗列「Department_ID」をVARCHARとして定義し、DEFAULT制約を設定

--社員テーブル
CREATE TABLE Employee(
	[Id] INT PRIMARY KEY,
	[Name] VARCHAR(10),
	[Department_ID] VARCHAR(10) DEFAULT 'aiueo'
)

--社員テーブルが作成されたことを確認
SELECT * FROM Employee

検証(SQLでDEFAULT制約が設定された列の型をVARCHARからNVARCHARへ変更)

1.列の型の変更(VARCHAR→NVARCHAR)を試みるとエラーが発生する

--VARCHARからNVARCHARへ変更
ALTER TABLE Employee ALTER COLUMN Department_ID NVARCHAR(10)



エラー内容は以下


オブジェクト 'DF__Employee__Depart__793DFFAF' は 列 'Department_ID' に依存しています。
ALTER TABLE ALTER COLUMN Department_ID は失敗しました。1 つ以上のオブジェクトがこの 列 を参照しています。

デザイナ(GUI)を用いて変更する方法

以下の記事を参照

後片付け

1.確認用のテーブル「Employee」を削除

--社員テーブル
DROP TABLE Employee

タイトルとURLをコピーしました