[SQLServer]SQL Serverでnot null 制約を付けたり外したりするには

not null制約を付けたり外したりするクエリは、カラムの宣言をやる感じで書きます。カラムの型を指定する必要があることに注意。

nullable → not null

alter table <テーブル名> alter column <列名> <型名> not null;
--例: alter table my_table alter column my_comment nvarchar(20) not null;


not null → nullable

alter table <テーブル名> alter column <列名> <型名> null;
 --例: alter table my_table alter column my_comment nvarchar(20) null;

注意

nullable → not null の変更を行う際に、alter columnする列にnullが入っているレコードが存在する場合はエラーになります。

ちなみに、SQL Server 2016では 「テーブル ‘<テーブル名>’ の列 ‘<列名>’ に値 NULL を挿入できません。この列では NULL 値が許可されていません。UPDATE は失敗します。」というエラーになりました。

この場合、列に入っているnullを他の値にupdateしてから、alter columnすればOKです。

参照資料 → https://docs.microsoft.com/ja-jp/sql/t-sql/statements/alter-table-transact-sql?view=sql-server-2017

コメントを残す