結論
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