IDENTITY と serial の暗黙の NOT NULL

GENERATED ... AS IDENTITY の列と serial 型の列を持つ 2 つの表の例です。NOT NULL を書かなくても不可になる 2 つの経路を確かめます。

入力

SQL

CREATE TABLE t1 (id int GENERATED ALWAYS AS IDENTITY, v int);
CREATE TABLE t2 (id serial, w int);

表示する列

すべての列

結果

エラー 0 件・警告 0 件・情報 2 件

指摘(エラー・警告・情報)

  • 情報 1 行目 t1 には PRIMARY KEY がありません。主キーのない表では、NULL を許す列だけで構成されることもあり、行の特定が難しくなります。
  • 情報 2 行目 t2 には PRIMARY KEY がありません。主キーのない表では、NULL を許す列だけで構成されることもあり、行の特定が難しくなります。
表の数2 個
列の数4 列
NULL 許可の列2 列
NULL 不可の列2 列

NULL 許可の一覧

NULL 許可の一覧
表列型NULL の扱い判定の根拠
t1idintNULL 不可IDENTITY 列は暗黙の NOT NULL(CREATE TABLE 文書)
t1vintNULL 許可制約なし(既定で NULL を許可)
t2idserialNULL 不可serial 型は NOT NULL 付きの整数列と同等(数値型 8.1.4)
t2wintNULL 許可制約なし(既定で NULL を許可)

検算(この結果になる理由)

IDENTITY 列は暗黙の NOT NULL(CREATE TABLE 文書)、serial は NOT NULL 付きの整数列と同等(8.1.4 節)です。v と w は何も付いておらず許可なので、不可 2 列・許可 2 列になります。

判定の根拠は仕様と根拠に、仕様の出典とともにまとめています。自分の入力で試すにはツールをお使いください。

このツールの制約

ご利用にあたって

  • 結果は字句の読み取りにもとづく確認で、実際のデータベースでの解釈を保証するものではありません。
  • ドキュメントは PostgreSQL License で公開されています。このサイトはその内容を要約して参照しており、転載はしていません。

ほかの入力例