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制約を設定してください。