この方法でテーブルを作成する場合:
CREATE TABLE people (
age INT,
name CHAR(20)
);
SQLは空の値をレコードとして自由に受け入れます:
INSERT INTO people VALUES (null, null);
null値の行があるため、これは問題になる可能性があります。
age | name
-----+--------
37 | Flavio
8 | Roger
|
これを解決するために、テーブル行に制約を宣言できます。 NOT NULL
null値を防ぎます:
CREATE TABLE people (
age INT NOT NULL,
name CHAR(20) NOT NULL
);
このクエリを再度実行しようとすると:
INSERT INTO people VALUES (null, null);
次のようなエラーが発生します:
ERROR: null value in column "age" violates not-null constraint
DETAIL: Failing row contains (null, null).
空の文字列は有効なnull以外の値であることに注意してください。