テーブルの列の NOT NULL , NULLABLE を変更するSQLを紹介します。
データベースのテーブルの列(カラム)にNULLの値を許容するかを設定することができます。
テーブルの作成後に仕様などが変わり、NULLを許容しない設定に変更したい、または、NULLを許容する設定に変更したいことがあります。
データベースのテーブルのカラムのNULLの許容の設定を変更する場合は、ALTER TALBE 文を利用します。
NULLを許容する列をNULLを許容しない設定に変更する場合、列の値にNULLが含まれるとエラーになりますので、
NULLのカラムに値を設定してNULLの値を持つカラムがない状態にします。
NULLを許容する列をNULLを許容しない設定に変更する
NULLを許容しない列をNULLを許容する設定に変更する
ALTER TABLE products ALTER COLUMN price int NOT NULL;
カラムの値がすべてnullになっている場合の例です。先に0で埋めてから、NOT NULLに変更しています。
UPDATE Figure set Width=0;
UPDATE Figure set Height=0;
ALTER TABLE Figure ALTER COLUMN Width int NOT NULL;
ALTER TABLE Figure ALTER COLUMN Height int NOT NULL;
SQL Serverなどで、SQL Management Studio のテーブルのデザインで[NULL を許容]のチェックボックスのチェックをつけたり、外したりする方法で変更した場合、
テーブルの再作成になってしまします。テーブルのサイズが小さい場合はほとんど問題になりませんが、テーブルのサイズが大きい場合、長時間テーブルがロックされたり、
テーブルの再作成に時間がかかりタイムアウトになってしまうことがあります。
大きなテーブルの列のNULLの設定を変更する場合は、テーブルのデザイン変更ではなく、SQL文を実行して処理するほうがおすすめです。大きなサイズのテーブルでも短い時間で実行完了します。