概要 :このチュートリアルでは、SQLite NOT NULL
の使用方法を学習します 列の値がNULL
でないことを確認するための制約 。
SQLiteの概要NOTNULL
制約
テーブルを作成するときに、列が NULL
を受け入れるかどうかを指定できます 値かどうか。デフォルトでは、テーブル内のすべての列は NULL
を受け入れます NOT NULL
を明示的に使用する場合を除く値 制約。
NOT NULL
を定義するには 列の制約には、次の構文を使用します。
CREATE TABLE table_name (
...,
column_name type_name NOT NULL,
...
);
Code language: SQL (Structured Query Language) (sql)
PRIMARY KEY
などの他の制約とは異なります およびCHECK
、 NOT NULL
のみを定義できます テーブルレベルではなく、列レベルでの制約。
SQL標準に基づいて、 PRIMARY KEY
常にNOTNULL
を意味する必要があります 。ただし、SQLiteでは NULL
が許可されています PRIMARY KEY
の値 列がINTEGERPRIMARY KEY
であることを除いて列 列またはテーブルがWITHOUTROWID
テーブルまたは列はNOTNULL
として定義されています 列。
これは、一部の初期バージョンのバグが原因です。このバグがSQL標準に準拠するように修正されている場合、レガシーシステムが破損する可能性があります。したがって、 NULL
を許可することが決定されました PRIMARY KEY
の値 列。
一度NOTNULL
制約が列に付加され、列の値を NULL
に設定しようとすると 挿入や更新などにより、制約違反が発生します。
SQLite NOT NULL
制約の例
次の例では、 supplyer
という名前の新しいテーブルを作成します :
CREATE TABLE suppliers(
supplier_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)
この例では、 supply_id
PRIMARY KEY
です サプライヤー
の列 テーブル。この列はINTEGERPRIMARY KEY
として宣言されているためです 、 NULL
は受け入れられません 値。
名前コード> 列も
NOTNULL
で宣言されます 制約があるため、NULL以外の値のみを受け入れます。
次のステートメントは、 NULL
を挿入しようとしています name
に サプライヤー
の列 テーブル:
INSERT INTO suppliers(name)
VALUES(NULL);
Code language: SQL (Structured Query Language) (sql)
NOT NULL
が原因で、ステートメントが失敗します 制約違反。エラーメッセージは次のとおりです。
SQL Error [19]: [SQLITE_CONSTRAINT] Abort due to constraint violation (NOT NULL constraint failed: suppliers.name)
Code language: CSS (css)
このチュートリアルでは、SQLite NOT NULL
の使用方法を学習しました 列の値がNULLでないことを保証するための制約。