ALTER TABLE @ SQL Server
SQL ServerでNULL制約の列を既存テーブルに追加しようとして
ALTER TABLE hoge WITH NOCHECK ADD hogehoge CHAR(3) NOT NULL
ってやったら、怒られた。
ALTER TABLE では、NULL を許可する列または DEFAULT 定義が指定されている列しか追加できません。追加する列が ID 列またはタイムスタンプ列の場合、または前述の条件のいずれも満たされない場合は、この列を追加できるようにテーブルは空である必要があります。
そんなもんなんかなぁ?他のRDBMSはどうなんだろう。
で正しいやり方はこちら
ALTER TABLE hoge ADD hogehoge CHAR(3) NOT NULL DEFAULT '000'
もしくは
ALTER TABLE hoge ADD hogehoge CHAR(3) NULL
ALTER TABLE hoge ALTER COLUMN hogehoge CHAR(3) NOT NULL