SQLite | テーブル(Table) | NOT NULL制約

列にNULLを保存できないようにするには、その列にNOT NULL制約を設定します。ここでは、NOT NULL制約の使い方について説明します。

NOT NULL制約とは

NOT NULL制約を設定した列にはNULLを保存できません。列にNOT NULL制約を設定する構文は次のとおりです。

CREATE TABLE テーブル名 (列名 NOT NULL, ...);

実際に制約を設定してみましょう。次の文は、name列にNOT NULL制約を設定したテーブルを作成します。

create table user (name text not null, address text);
sqlite> create table user (name text not null, address text);
sqlite> 

次にデータを追加します。address列にはNULLを保存できます。

insert into user values ('dekuma', 'Seoul');
insert into user values ('kimkc', null);
sqlite> insert into user values ('dekuma', 'Seoul');
sqlite> insert into user values ('kimkc', null);
sqlite> 

name列にはNOT NULL制約が設定されているため、NULLを保存しようとするとError: NOT NULL constraint failed: user.nameというエラーメッセージが表示されます。

insert into user values (null, 'Busan');
sqlite> insert into user values (null, 'Busan');
Error: NOT NULL constraint failed: user.name
sqlite>

NOT NULL制約が設定された列の値を省略した場合も、自動的にNULLを保存しようとするため同じエラーが発生します。

insert into user (address) values ('Daejeon');
sqlite> insert into user (address) values ('Daejeon');
Error: NOT NULL constraint failed: user.name
sqlite> 

データの追加時に必ず値が必要な列には、NOT NULL制約を設定してください。